easytest: Simple, expressive testing library

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Warnings:

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" suite

This 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.

Properties

Versions0.1, 0.1, 0.1.1, 0.2, 0.2.1
Change logNone available
Dependenciesasync (>=2.1 && <=2.2), base (>=4.5 && <=5), containers (>=0.4.0 && <0.6), mtl (>=2.0.1 && <2.3), random (>=1.1 && <2), stm (>=2.4 && <3), text (==1.2.*) [details]
LicenseMIT
CopyrightCopyright (C) 2017-2018 Joel Burget, Copyright (C) 2016 Paul Chiusano and contributors
AuthorJoel Burget, Paul Chiusano
MaintainerJoel Burget <joelburget@gmail.com>
CategoryTesting
Home pagehttps://github.com/joelburget/easytest
Bug trackerhttps://github.com/joelburget/easytest/issues
Source repositoryhead: git clone git@github.com:joelburget/easytest.git
UploadedMon Mar 5 17:05:34 UTC 2018 by joelb

Modules

[Index]

Flags

NameDescriptionDefaultType
optimizedDisabledManual
quietDisabledManual

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees