hedgehog: Hedgehog will eat all your bugs.

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:

Hedgehog is a modern property-based testing system, in the spirit of QuickCheck. Hedgehog uses integrated shrinking, so shrinks obey the invariants of generated values by construction.

To get started quickly, see the examples: https://github.com/hedgehogqa/haskell-hedgehog/tree/master/hedgehog-example


[Skip to ReadMe]

Properties

Versions0.1, 0.2, 0.2.1, 0.2.2, 0.3, 0.4, 0.4.1, 0.5, 0.5.1, 0.5.2, 0.5.2, 0.5.3, 0.6, 0.6.1
Change logCHANGELOG.md
Dependenciesansi-terminal (>=0.6 && <0.9), async (>=2.0 && <2.2), base (>=3 && <5), bytestring (==0.10.*), concurrent-output (>=1.7 && <1.11), containers (>=0.4 && <0.6), directory (>=1.2 && <1.4), exceptions (>=0.7 && <0.9), lifted-async (>=0.7 && <0.10), mmorph (>=1.0 && <1.2), monad-control (==1.0.*), mtl (>=2.1 && <2.3), pretty-show (==1.6.*), primitive (==0.6.*), random (==1.1.*), resourcet (>=1.1 && <1.3), semigroups (>=0.16 && <0.19), stm (==2.4.*), template-haskell (>=2.10 && <2.14), text (>=1.1 && <1.3), th-lift (==0.7.*), time (>=1.4 && <1.9), transformers (>=0.4 && <0.6), transformers-base (==0.4.*), unix (>=2.6 && <2.8), wl-pprint-annotated (>=0.0 && <0.2) [details]
LicenseBSD-3-Clause
AuthorJacob Stanley
MaintainerJacob Stanley <jacob@stanley.io>
CategoryTesting
Home pagehttps://hedgehog.qa
Bug trackerhttps://github.com/hedgehogqa/haskell-hedgehog/issues
Source repositoryhead: git clone git://github.com/hedgehogqa/haskell-hedgehog.git
UploadedMon Feb 5 05:13:08 UTC 2018 by JacobStanley

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for hedgehog-0.5.2

[back to package description]

hedgehog Hackage Travis

Hedgehog will eat all your bugs.

<img src="https://github.com/hedgehogqa/haskell-hedgehog/raw/master/img/hedgehog-logo.png" width="307" align="right"/>

Hedgehog is a modern property-based testing system, in the spirit of QuickCheck. Hedgehog uses integrated shrinking, so shrinks obey the invariants of generated values by construction.

Features

Example

The main module, Hedgehog, includes almost everything you need to get started writing property tests with Hedgehog.

It is designed to be used alongside Hedgehog.Gen and Hedgehog.Range which should be imported qualified. You also need to enable Template Haskell so the Hedgehog test runner can find your properties.

{-# LANGUAGE TemplateHaskell #-}

import           Hedgehog
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range

Once you have your imports set up, you can write a simple property:

prop_reverse :: Property
prop_reverse =
  property $ do
    xs <- forAll $ Gen.list (Range.linear 0 100) Gen.alpha
    reverse (reverse xs) === xs

And add the Template Haskell splice which will discover your properties:

tests :: IO Bool
tests =
  checkParallel $$(discover)

If you prefer to avoid macros, you can specify the group of properties to run manually instead:

{-# LANGUAGE OverloadedStrings #-}

tests :: IO Bool
tests =
  checkParallel $ Group "Test.Example" [
      ("prop_reverse", prop_reverse)
    ]

You can then load the module in GHCi, and run it:

λ tests
━━━ Test.Example ━━━
  ✓ prop_reverse passed 100 tests.