;doc: contributing: update unit test docs
[ci skip]
This commit is contained in:
parent
ca4fade4af
commit
1f315a2aa3
@ -697,11 +697,11 @@ About testing in the hledger project, as of 201809.
|
|||||||
means a function. So, many of our functions have one or more unit
|
means a function. So, many of our functions have one or more unit
|
||||||
tests. These are mostly in hledger-lib, with a few in hledger.
|
tests. These are mostly in hledger-lib, with a few in hledger.
|
||||||
|
|
||||||
Our unit tests use
|
Our unit tests use the
|
||||||
[easytest](http://hackage.haskell.org/package/easytest) and some
|
[tasty](http://hackage.haskell.org/package/tasty) test runner
|
||||||
helpers from
|
and some helpers from
|
||||||
[Hledger.Utils.Test](https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Test.hs),
|
[Hledger.Utils.Test](https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Test.hs).
|
||||||
and follow a consistent pattern which aims to keep them
|
We would like them to be:
|
||||||
|
|
||||||
- easy to read (clear, concise)
|
- easy to read (clear, concise)
|
||||||
- easy to write (low boilerplate, low cognitive load)
|
- easy to write (low boilerplate, low cognitive load)
|
||||||
@ -711,7 +711,7 @@ About testing in the hledger project, as of 201809.
|
|||||||
- and scalable (usable for all devs, easy to run and select,
|
- and scalable (usable for all devs, easy to run and select,
|
||||||
suitable for small/large modules/packages).
|
suitable for small/large modules/packages).
|
||||||
|
|
||||||
Here\'s the pattern (let us know if you see a better way):
|
Here\'s the current pattern (let us know if you see a better way):
|
||||||
|
|
||||||
``` haskell
|
``` haskell
|
||||||
module Foo (
|
module Foo (
|
||||||
@ -730,30 +730,21 @@ About testing in the hledger project, as of 201809.
|
|||||||
|
|
||||||
tests_Foo = tests "Foo" [ -- define tests at the end of each module
|
tests_Foo = tests "Foo" [ -- define tests at the end of each module
|
||||||
|
|
||||||
|
-- a group of several named tests for functionA
|
||||||
tests "functionA" [
|
tests "functionA" [
|
||||||
test "a basic test" $ expect SOMEBOOL
|
test "a basic test" $ assertBool "" SOMEBOOL
|
||||||
,test "a pretty equality test" $ SOMEEXPR `is` EXPECTEDVALUE
|
,test "a pretty equality test" $ SOMEEXPR @?= EXPECTEDVALUE
|
||||||
,test "a pretty parsing test" $ expectParseEq PARSER INPUT EXPECTEDRESULT
|
,test "a pretty parsing test" $ assertParseEq PARSER INPUT EXPECTEDRESULT
|
||||||
,test "a sequential test" $ do
|
,test "a multiple assertions test" $ do
|
||||||
A `is` B
|
A @?= B
|
||||||
io $ doSomeIO
|
doSomeIO
|
||||||
C `is` D
|
C @?= D
|
||||||
,_test "an ignored test" $ ... -- will be skipped
|
|
||||||
]
|
]
|
||||||
|
|
||||||
,tests "functionB" [
|
-- a single test containing multiple unnamed assertions for functionB
|
||||||
it "does blah" $ ... -- alternate spelling for test/_test
|
,test "functionB" $ do
|
||||||
,_it "will bleh" $ ...
|
assertBool "" BOOL
|
||||||
]
|
EXPR @?= VALUE
|
||||||
|
|
||||||
,tests "functionC" [
|
|
||||||
expect BOOL -- unnamed tests (harder to identify/select)
|
|
||||||
,EXPR `is` VALUE
|
|
||||||
]
|
|
||||||
|
|
||||||
,_tests "functionD" [ -- will be skipped
|
|
||||||
...
|
|
||||||
]
|
|
||||||
|
|
||||||
,tests_Foo -- aggregate submodule tests
|
,tests_Foo -- aggregate submodule tests
|
||||||
,tests_Bar
|
,tests_Bar
|
||||||
@ -770,7 +761,7 @@ About testing in the hledger project, as of 201809.
|
|||||||
command (`hledger test`).
|
command (`hledger test`).
|
||||||
|
|
||||||
Here\'s the quick way to run unit tests while developing:\
|
Here\'s the quick way to run unit tests while developing:\
|
||||||
`make ghcid-test` or `make ghcid-test-Hledger.Some.Module`.
|
`make ghcid-test` or `make ghcid-test-Some.Module`.
|
||||||
|
|
||||||
2. Doc tests
|
2. Doc tests
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user