easytest: Simple, expressive testing library
EasyTest is a simple testing toolkit, meant to replace most uses of QuickCheck, SmallCheck, HUnit, and frameworks like Tasty, etc. Here's an example usage:
module Main where
import EasyTest
import Control.Applicative
import Control.Monad
suite :: Test ()
suite = tests
[ scope "addition.ex1" $ expect (1 + 1 == 2)
, scope "addition.ex2" $ expect (2 + 3 == 5)
, scope "list.reversal" . fork $ do
-- generate lists from size 0 to 10, of Ints in (0,43)
-- shorthand: listsOf [0..10] (int' 0 43)
ns <- [0..10] `forM` \n -> replicateM n (int' 0 43)
ns `forM_` \ns -> expect (reverse (reverse ns) == ns)
-- equivalent to `scope "addition.ex3"`
, scope "addition" . scope "ex3" $ expect (3 + 3 == 6)
, scope "always passes" $ do
note "I'm running this test, even though it always passes!"
ok -- like `pure ()`, but records a success result
, scope "failing test" $ crash "oh noes!!" ]
-- NB: `run suite` would run all tests, but we only run
-- tests whose scopes are prefixed by "addition"
main = runOnly "addition" suiteThis generates the output:
Randomness seed for this run is 5104092164859451056 Raw test output to follow ... ------------------------------------------------------------ OK addition.ex1 OK addition.ex2 OK addition.ex3 ------------------------------------------------------------ ✅ 3 tests passed, no failures! 👍 🎉
The idea here is to write tests with ordinary Haskell code, with control flow explicit and under programmer control.
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| optimized | Disabled | |
| quiet | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- easytest-0.2.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1, 0.1.1, 0.2, 0.2.1, 0.3 |
|---|---|
| Change log | CHANGES.md |
| Dependencies | async (>=2.1 && <=2.3), base (>=4.8 && <=5), call-stack (>=0.1), containers (>=0.4.0 && <0.7), mtl (>=2.0.1 && <2.3), random (>=1.1 && <2), semigroups (>=0.18 && <0.19), stm (>=2.4 && <3), text (>=1.2 && <1.3), transformers (>=0.4.2) [details] |
| Tested with | ghc ==7.10.3, ghc ==8.0.2, ghc ==8.2.2, ghc ==8.4.3, ghc ==8.6.1 |
| License | MIT |
| Copyright | Copyright (C) 2017-2018 Joel Burget, Copyright (C) 2016 Paul Chiusano and contributors |
| Author | Joel Burget, Paul Chiusano |
| Maintainer | Joel Burget <joelburget@gmail.com> |
| Category | Testing |
| Home page | https://github.com/joelburget/easytest |
| Bug tracker | https://github.com/joelburget/easytest/issues |
| Source repo | head: git clone git@github.com:joelburget/easytest.git |
| Uploaded | by joelb at 2018-10-24T18:57:18Z |
| Distributions | Debian:0.2.1 |
| Reverse Dependencies | 2 direct, 7 indirect [details] |
| Downloads | 3996 total (11 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs available [build log] Last success reported on 2018-10-24 [all 1 reports] |