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:
Profpatsch 2023-01-07 14:54:45 +01:00 committed by clbot
parent 83fb27dfbc
commit b3d93a5048
3 changed files with 117 additions and 0 deletions

View 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

View file

@ -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;

View file

@ -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: