## Version 1.0.1 (2019-09-16) - Add compatibility with GHC 8.8 ([#319][319], [@erikd][erikd]) - Include location of failed assertion in report. This enables editors to more easily parse the location of failed test assertions, and provide links/jump functionality ([#308][308], [@owickstrom][owickstrom]) - Stop using filter to define unicode ([#303][303], [@ajmcmiddlin][ajmcmiddlin]) - Export LabelName from main module ([#299][299], [@erikd][erikd]) ## Version 1.0 (2019-05-13) - Add histograms to labels / coverage ([#289][289], [@jacobstanley][jacobstanley]) - Improved shrinking of lists ([#276][276], [@jacobstanley][jacobstanley] / [@edsko][edsko]) - Simplify `MonadGen`, this breaks the use of `StateT` on the outside of a `GenT` for the time being, it still works fine on the inside though and you can use `distributeT` to run it ([#276][276], [@jacobstanley][jacobstanley]) - Change `Applicative` `GenT` to use zipping ([#272][272], [@jacobstanley][jacobstanley] / [@edsko][edsko]) - Rename `Tree` -> `TreeT`, `Node` -> `NodeT` ([#272][272], [@jacobstanley][jacobstanley]) - `diff` function which takes any `a -> a -> Bool` comparison function ([#196][196], [@chessai][chessai] / [@jacobstanley][jacobstanley]) - Labelling of test runs via `label`, `collect` ([#262][262], [@ruhatch][ruhatch] / [@jacobstanley][jacobstanley]) - Classification of test runs via `cover`, `classify` ([#253][253], [@felixmulder][felixmulder] / [@jacobstanley][jacobstanley]) - Define proper `Applicative` instances for `NodeT`, `TreeT` and `GenT` ([#173][173][@sjakobi][sjakobi]) - `MonadFail` instance for `PropertyT` ([#267][267], [@geigerzaehler][geigerzaehler]) - `MonadResource` instance for `PropertyT` ([#268][268], [@geigerzaehler][geigerzaehler]) - Example for the `tripping` function ([#258][258], [@HuwCampbell][HuwCampbell]) - Improve documentation for state machine testing ([#252][252], [@endgame][endgame]) - `runTests` function for running tests from a top level executable, this was later renamed to `defaultMain` as is the de facto convention ([#168][168], [@erikd][erikd]) - Show output variables when parallel state machine testing fails to linearise ([#235][235], [@HuwCampbell][HuwCampbell]) - Note about `enumBounded` danger ([#202][202], [@thumphries][thumphries]) - Expose `discoverPrefix` to find prefixed properties ([#229][229], [@ruhatch][ruhatch]) - Remove use of `unix` package and replace with `lookupEnv` ([#226][226], [@puffnfresh][puffnfresh]) ## Version 0.6.1 (2018-09-22) - Fix UTF-8 related rendering bugs on Windows ([#218][218], [@moodmosaic][moodmosaic]) - Verify that our SplitMix/Seed avoids pathological γ-values ([#207][207], [@moodmosaic][moodmosaic]) - Avoid weak gamma values in Hedgehog.Internal.Seed ([#198][198], [@moodmosaic][moodmosaic]) ## Version 0.6 (2018-05-14) - Pass [Dieharder][Dieharder] statistical/randomness tests ([#185][185], [@moodmosaic][moodmosaic]) - Catch `readFile` exceptions on the repl ([#184][184], [@thumphries][thumphries]) ## Version 0.5.3 (2018-03-12) - Add `Semigroup` and `Monoid` instances for `GenT` that lift the inner `Monoid` ([#156][156], [@andrewthad][andrewthad]) - `Gen.unicode` no longer generates non-characters ([#154][154], [@johnchandlerburnham][johnchandlerburnham]) - Documentation improvements ([#162][162], [@fisx][fisx]) - Documentation fixes ([#157][157], [@dredozubov][dredozubov]) ## Version 0.5.2 (2018-02-05) - Add doc explaining use of `withTests 1` ([#134][134], [@chris-martin][chris-martin]) - Explicitly define `Semigroup` instance for `Summary` ([#142][142], [@gwils][gwils]) - Depend on `semigroups` ([#140][140], [@LightAndLight][LightAndLight]) - Support `transformers-0.4` ([#150][150], [@gwils][gwils]) ## Version 0.5.1 (2017-12-06) - Only invoke `setNumCapabilities` when using the `-threaded` runtime ([#130][130], [@ekmett][ekmett]) - Correct `mixGamma` oddness check ([#124][124], [@markhibberd][markhibberd]) ## Version 0.5 (2017-07-16) - Parallel state machine testing, allows detection of commands which are not-atomic ([#98][98], [@jacobstanley][jacobstanley]) - Easier to use variables for state machine testing ([#94][94], [@jacobstanley][jacobstanley]) - `MonadGen` class allows the use of transformers like `ReaderT` and `StateT` on the outside of generators ([#99][99], [@jacobstanley][jacobstanley]) - Better error messages for tests which throw exceptions ([#95][95], [@jacobstanley][jacobstanley]) - Separated test input generation and assertions in to `PropertyT` and `TestT` respectively, this allows `TestT` to have a `MonadBaseControl` instance ([#96][96], [@jacobstanley][jacobstanley]) - This document grew links to the pull requests which introduced various changes ([#93][93], [@moodmosaic][moodmosaic]) ## Version 0.4.1 (2017-06-28) - Fixed runtime type error that could occur when shrinking state machine commands ([#91][91], [@jacobstanley][jacobstanley]) ## Version 0.4 (2017-06-28) - Abstract state machine testing, check out Tim Humphries' great [blog post](http://teh.id.au/posts/2017/07/15/state-machine-testing) or the [process registry example](https://github.com/hedgehogqa/haskell-hedgehog/blob/master/hedgehog-example/test/Test/Example/Registry.hs) to see how it works ([#89][89], [@jacobstanley][jacobstanley]) - `liftCatch`, `liftCatchIO`, `withCatch` functions for isolating exceptions during tests ([#89][89], [@jacobstanley][jacobstanley]) ## Version 0.3 (2017-06-11) - Exponential range combinators ([#43][43], [@chris-martin][chris-martin]) - Roundtrip example, check out the [blog post](http://teh.id.au/posts/2017/06/07/round-trip-property/) ([#85][85], [@thumphries][thumphries]) - `tripping` now displays intermediate value ([#85][85], [@jacobstanley][jacobstanley]) - `distribute` function for pulling a transformer out to the top level ([#83][83], [@jacobstanley][jacobstanley]) - `withExceptT` function for executing tests with an inner `ExceptT` (e.g. `Test (ExceptT x m) a`) ([#83][83], [@jacobstanley][jacobstanley]) ## Version 0.2.2 (2017-05-16) - Fixed scope of `unicode` character generators ([#76][76], [@moodmosaic][moodmosaic]) - Widen version bounds for some dependencies ([#80][80], [@amarpotghan][amarpotghan]) - Expose test modules to fix build on nix / hydra ([#78][78], [@amarpotghan][amarpotghan]) - Fixes for GHC 8.2 RC2 ([#77][77], [@erikd][erikd]) ## Version 0.2.1 (2017-05-09) - Added `ascii`, `latin1`, `unicode` character generators ([#73][73], [@jacobstanley][jacobstanley]) ## Version 0.2 (2017-05-06) - Added a quiet test runner which can be activated by setting `HEDGEHOG_VERBOSITY=0` ([@jacobstanley][jacobstanley]) - Concurrent test runner does not display tests until they are executing ([@jacobstanley][jacobstanley]) - Test runner now outputs a summary of how many successful / failed tests were run ([@jacobstanley][jacobstanley]) - `checkSequential` and `checkParallel` now allow for tests to be run without Template Haskell ([@jacobstanley][jacobstanley]) - Auto-discovery of properties is now available via `discover` instead of being baked in ([@jacobstanley][jacobstanley]) - `annotate` allows source code to be annotated inline with extra information ([@jacobstanley][jacobstanley]) - `forAllWith` can be used to generate values without a `Show` instance ([@jacobstanley][jacobstanley]) - Removed uses of `Typeable` to allow for generating types which cannot implement it ([@jacobstanley][jacobstanley]) [Dieharder]: https://webhome.phy.duke.edu/~rgb/General/dieharder.php [jacobstanley]: https://github.com/jacobstanley [chris-martin]: https://github.com/chris-martin [thumphries]: https://github.com/thumphries [moodmosaic]: https://github.com/moodmosaic [amarpotghan]: https://github.com/amarpotghan [erikd]: https://github.com/erikd [ekmett]: https://github.com/ekmett [markhibberd]: https://github.com/markhibberd [gwils]: https://github.com/gwils [LightAndLight]: https://github.com/LightAndLight [johnchandlerburnham]: https://github.com/johnchandlerburnham [andrewthad]: https://github.com/andrewthad [dredozubov]: https://github.com/dredozubov [fisx]: https://github.com/fisx [puffnfresh]: https://github.com/puffnfresh [ruhatch]: https://github.com/ruhatch [HuwCampbell]: https://github.com/HuwCampbell [endgame]: https://github.com/endgame [geigerzaehler]: https://github.com/geigerzaehler [sjakobi]: https://github.com/sjakobi [felixmulder]: https://github.com/felixmulder [chessai]: https://github.com/chessai [edsko]: https://github.com/edsko [ajmcmiddlin]: https://github.com/ajmcmiddlin [owickstrom]: https://github.com/owickstrom [319]: https://github.com/hedgehogqa/haskell-hedgehog/pull/319 [308]: https://github.com/hedgehogqa/haskell-hedgehog/pull/308 [303]: https://github.com/hedgehogqa/haskell-hedgehog/pull/303 [299]: https://github.com/hedgehogqa/haskell-hedgehog/pull/299 [289]: https://github.com/hedgehogqa/haskell-hedgehog/pull/289 [276]: https://github.com/hedgehogqa/haskell-hedgehog/pull/276 [272]: https://github.com/hedgehogqa/haskell-hedgehog/pull/272 [268]: https://github.com/hedgehogqa/haskell-hedgehog/pull/268 [267]: https://github.com/hedgehogqa/haskell-hedgehog/pull/267 [262]: https://github.com/hedgehogqa/haskell-hedgehog/pull/262 [258]: https://github.com/hedgehogqa/haskell-hedgehog/pull/258 [253]: https://github.com/hedgehogqa/haskell-hedgehog/pull/253 [252]: https://github.com/hedgehogqa/haskell-hedgehog/pull/252 [235]: https://github.com/hedgehogqa/haskell-hedgehog/pull/235 [229]: https://github.com/hedgehogqa/haskell-hedgehog/pull/229 [226]: https://github.com/hedgehogqa/haskell-hedgehog/pull/226 [218]: https://github.com/hedgehogqa/haskell-hedgehog/pull/218 [207]: https://github.com/hedgehogqa/haskell-hedgehog/pull/207 [202]: https://github.com/hedgehogqa/haskell-hedgehog/pull/202 [198]: https://github.com/hedgehogqa/haskell-hedgehog/pull/198 [196]: https://github.com/hedgehogqa/haskell-hedgehog/pull/196 [185]: https://github.com/hedgehogqa/haskell-hedgehog/pull/185 [184]: https://github.com/hedgehogqa/haskell-hedgehog/pull/184 [173]: https://github.com/hedgehogqa/haskell-hedgehog/pull/173 [168]: https://github.com/hedgehogqa/haskell-hedgehog/pull/168 [162]: https://github.com/hedgehogqa/haskell-hedgehog/pull/162 [157]: https://github.com/hedgehogqa/haskell-hedgehog/pull/157 [156]: https://github.com/hedgehogqa/haskell-hedgehog/pull/156 [154]: https://github.com/hedgehogqa/haskell-hedgehog/pull/154 [150]: https://github.com/hedgehogqa/haskell-hedgehog/pull/150 [142]: https://github.com/hedgehogqa/haskell-hedgehog/pull/142 [140]: https://github.com/hedgehogqa/haskell-hedgehog/pull/140 [134]: https://github.com/hedgehogqa/haskell-hedgehog/pull/134 [130]: https://github.com/hedgehogqa/haskell-hedgehog/pull/130 [124]: https://github.com/hedgehogqa/haskell-hedgehog/pull/124 [99]: https://github.com/hedgehogqa/haskell-hedgehog/pull/99 [98]: https://github.com/hedgehogqa/haskell-hedgehog/pull/98 [96]: https://github.com/hedgehogqa/haskell-hedgehog/pull/96 [95]: https://github.com/hedgehogqa/haskell-hedgehog/pull/95 [94]: https://github.com/hedgehogqa/haskell-hedgehog/pull/94 [93]: https://github.com/hedgehogqa/haskell-hedgehog/pull/93 [91]: https://github.com/hedgehogqa/haskell-hedgehog/pull/91 [89]: https://github.com/hedgehogqa/haskell-hedgehog/pull/89 [85]: https://github.com/hedgehogqa/haskell-hedgehog/pull/85 [83]: https://github.com/hedgehogqa/haskell-hedgehog/pull/83 [80]: https://github.com/hedgehogqa/haskell-hedgehog/pull/80 [78]: https://github.com/hedgehogqa/haskell-hedgehog/pull/78 [77]: https://github.com/hedgehogqa/haskell-hedgehog/pull/77 [76]: https://github.com/hedgehogqa/haskell-hedgehog/pull/76 [73]: https://github.com/hedgehogqa/haskell-hedgehog/pull/73 [43]: https://github.com/hedgehogqa/haskell-hedgehog/pull/43