feat(users/Profpatsch/my-prelude): Add Test.hs
Change-Id: Icdbbd310243baf2dc9a0038d9ea5eee7c65be421 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7793 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
83fb27dfbc
commit
b3d93a5048
3 changed files with 117 additions and 0 deletions
115
users/Profpatsch/my-prelude/Test.hs
Normal file
115
users/Profpatsch/my-prelude/Test.hs
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
|
{- Generate Test suites.
|
||||||
|
|
||||||
|
Restricted version of hspec, introduction: http://hspec.github.io/getting-started.html
|
||||||
|
-}
|
||||||
|
module Test
|
||||||
|
( Spec,
|
||||||
|
runTest,
|
||||||
|
testMain,
|
||||||
|
|
||||||
|
-- * Structure
|
||||||
|
describe,
|
||||||
|
it,
|
||||||
|
|
||||||
|
-- * Expectations
|
||||||
|
Expectation,
|
||||||
|
testOk,
|
||||||
|
testErr,
|
||||||
|
shouldBe,
|
||||||
|
shouldNotBe,
|
||||||
|
shouldSatisfy,
|
||||||
|
shouldNotSatisfy,
|
||||||
|
|
||||||
|
-- * Setup & Teardown (hooks http://hspec.github.io/writing-specs.html#using-hooks)
|
||||||
|
before,
|
||||||
|
before_,
|
||||||
|
beforeWith,
|
||||||
|
beforeAll,
|
||||||
|
beforeAll_,
|
||||||
|
beforeAllWith,
|
||||||
|
after,
|
||||||
|
after_,
|
||||||
|
afterAll,
|
||||||
|
afterAll_,
|
||||||
|
around,
|
||||||
|
around_,
|
||||||
|
aroundWith,
|
||||||
|
aroundAll,
|
||||||
|
aroundAllWith,
|
||||||
|
|
||||||
|
-- * Common helpful predicates (use with 'shouldSatisfy')
|
||||||
|
isRight,
|
||||||
|
isLeft,
|
||||||
|
|
||||||
|
-- * Pretty printing of errors
|
||||||
|
errColored,
|
||||||
|
module Pretty,
|
||||||
|
)
|
||||||
|
where
|
||||||
|
|
||||||
|
-- export more expectations if needed
|
||||||
|
|
||||||
|
import Data.Either
|
||||||
|
( isLeft,
|
||||||
|
isRight,
|
||||||
|
)
|
||||||
|
import Pretty
|
||||||
|
import Test.Hspec
|
||||||
|
( Expectation,
|
||||||
|
HasCallStack,
|
||||||
|
Spec,
|
||||||
|
after,
|
||||||
|
afterAll,
|
||||||
|
afterAll_,
|
||||||
|
after_,
|
||||||
|
around,
|
||||||
|
aroundAll,
|
||||||
|
aroundAllWith,
|
||||||
|
aroundWith,
|
||||||
|
around_,
|
||||||
|
before,
|
||||||
|
beforeAll,
|
||||||
|
beforeAllWith,
|
||||||
|
beforeAll_,
|
||||||
|
beforeWith,
|
||||||
|
before_,
|
||||||
|
describe,
|
||||||
|
hspec,
|
||||||
|
it,
|
||||||
|
)
|
||||||
|
import Test.Hspec.Expectations.Pretty
|
||||||
|
( expectationFailure,
|
||||||
|
shouldBe,
|
||||||
|
shouldNotBe,
|
||||||
|
shouldNotSatisfy,
|
||||||
|
shouldSatisfy,
|
||||||
|
)
|
||||||
|
|
||||||
|
-- | Run a test directly (e.g. from the repl)
|
||||||
|
runTest :: Spec -> IO ()
|
||||||
|
runTest = hspec
|
||||||
|
|
||||||
|
-- | Run a testsuite
|
||||||
|
testMain ::
|
||||||
|
-- | Name of the test suite
|
||||||
|
String ->
|
||||||
|
-- | The tests in this test module
|
||||||
|
Spec ->
|
||||||
|
IO ()
|
||||||
|
testMain testSuiteName tests = hspec $ describe testSuiteName tests
|
||||||
|
|
||||||
|
-- | test successful
|
||||||
|
testOk :: Expectation
|
||||||
|
testOk = pure ()
|
||||||
|
|
||||||
|
-- | Abort the test with an error message.
|
||||||
|
-- If you want to display a Haskell type, use `errColored`.
|
||||||
|
testErr :: HasCallStack => String -> Expectation
|
||||||
|
testErr = expectationFailure
|
||||||
|
|
||||||
|
-- | Display a list of 'Err's as a colored error message
|
||||||
|
-- and abort the test.
|
||||||
|
errColored :: [Pretty.Err] -> Expectation
|
||||||
|
errColored = testErr . Pretty.prettyErrs
|
|
@ -11,6 +11,7 @@ pkgs.haskellPackages.mkDerivation {
|
||||||
./Pretty.hs
|
./Pretty.hs
|
||||||
./Data/Error/Tree.hs
|
./Data/Error/Tree.hs
|
||||||
./Aeson.hs
|
./Aeson.hs
|
||||||
|
./Test.hs
|
||||||
];
|
];
|
||||||
|
|
||||||
isLibrary = true;
|
isLibrary = true;
|
||||||
|
|
|
@ -11,6 +11,7 @@ library
|
||||||
Pretty
|
Pretty
|
||||||
Data.Error.Tree
|
Data.Error.Tree
|
||||||
Aeson
|
Aeson
|
||||||
|
Test
|
||||||
|
|
||||||
-- Modules included in this executable, other than Main.
|
-- Modules included in this executable, other than Main.
|
||||||
-- other-modules:
|
-- other-modules:
|
||||||
|
|
Loading…
Reference in a new issue