chore(users/Profpatsch): move utils to my-prelude
I want to use these in multiple projects. Change-Id: I5dfdad8614bc5835e59df06f724de78acae78d42 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8971 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
6ecc7a2ee4
commit
57bab040ed
12 changed files with 114 additions and 64 deletions
115
users/Profpatsch/my-prelude/src/Test.hs
Normal file
115
users/Profpatsch/my-prelude/src/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
|
||||
Loading…
Add table
Add a link
Reference in a new issue