hspec-2.11.15: CHANGES.markdown
## Changes in 2.11.15 (2025-12-08)
- Remove redundant `tf-random` dependency
## Changes in 2.11.14 (2025-09-30)
- Make sure that `--pretty` completes in *O(n)* time
## Changes in 2.11.13 (2025-09-15)
- Make diff algorithm line based
- Improve pretty-printing of nested records
## Changes in 2.11.12 (2025-03-17)
- Add `--no-rerun` and `--no-rerun-all-on-success`
## Changes in 2.11.11 (2025-02-17)
- Compatibility with GHC 9.12
## Changes in 2.11.10 (2024-11-16)
- Add (experimental) extensions API
- Handle small terminal sizes more gracefully when reporting progress
- Correctly indent multi-line pending messages
- Use "erase in line" ANSI sequence to clear transient output (instead of
overwriting it with spaces)
## Changes in 2.11.9 (2024-05-24)
- Compatibility with GHC 9.10.1
- Drop support for GHC 7.10.3
## Changes in 2.11.8 (2024-04-22)
- Make the build pass with QuickCheck 2.15
## Changes in 2.11.7 (2023-10-22)
- Include `--seed` in the note on how to rurun a failing item.
## Changes in 2.11.6 (2023-10-11)
- Compatibility with GHC 9.8.1
- Run cleanup actions on `--fail-fast` (see #860)
## Changes in 2.11.5 (2023-09-20)
- Add `--show-exceptions` and `--display-exceptions`
## Changes in 2.11.4 (2023-07-20)
- Depend on `hspec-expectations-0.8.4`
## Changes in 2.11.3 (2023-07-10)
- Suppress informational output from QuickCheck when
`Test.QuickCheck.Args.chatty` is `False` (#840)
## Changes in 2.11.2 (2023-07-06)
- Add `--expert` mode
## Changes in 2.11.1 (2023-05-28)
- Depend on `hspec-expectations-0.8.3`
## Changes in 2.11.0.1 (2023-04-28)
- Don't crash when home directories are unsupported (WASM/WASI) (thanks
@amesgen)
## Changes in 2.11.0 (2023-04-21)
- Drop support for GHC < 7.10.3
- Improve coloring of whitespace-only segments on `--diff`
- Add `ColorizedReason` constructor to `FailureReason`
- Provide a new package `hspec-api`, a stable API that can be used to extend
Hspec's functionality.
- Deprecate `Test.Hspec.Core.Formatters.V1` in favor of
`Test.Hspec.Api.Formatters.V1`
- Add `--fail-on=empty-description`
- Print slow spec items to `stderr` instead of `stdout`
- Handle quoting/escaping in `.hspec` files
- Flush output handle after reporting progress on `-fprogress`
## Changes in 2.10.10 (2023-03-07)
- Re-export `sequential` from `Test.Hspec`
- Rerun `beforeAll` / `afterAll` on `--rerun-all-on-success` (#768)
## Changes in 2.10.9 (2023-01-13)
- Print error message on `-—fail-on=empty`
- Only fail on `-—fail-on=empty` if at least one spec item has been filtered
- Re-export more types from `Test.Hspec.Core.Runner`
- Fix a pretty-printing bug where `[]` would be pretty-printed as `""`
- Don't pretty-print if the expected and actual value would be equal after
pretty-printing
- Prevent deadlocks on unguarded exceptions in runner (#771)
## Changes in 2.10.8 (2022-12-19)
- Add pretty-printing support for rational numbers
- Force / evaluate exceptions recursively (#763)
- Add `xprop` and `fprop`, which use `xit` and `fit` (thanks @lehins)
## Changes in 2.10.7 (2022-12-03)
- Do not depend on `ghc` for pretty-printing (#750, #752)
## Changes in 2.10.6 (2022-09-13)
- Suppress excessive diff output (#449)
- Allow the use of an external diff program. This can e.g. be used by
setting `HSPEC_DIFF_COMMAND="diff -u --color -L expected -L actual"` or
`HSPEC_DIFF_COMMAND="git diff"`
- Do not imply `--fail-on=empty` on `--strict`
## Changes in 2.10.5 (2022-09-09)
- Add `--fail-on`. This subsums `--fail-on-focused` and `--fail-on-pending`.
- Add `--fail-on=empty` (#650)
- Add `registerFormatter` and `registerDefaultFormatter` to
`Test.Hspec.Runner`.
- Revert deprecation of `Test.Hspec.Formatters` and
`Test.Hspec.Core.Formatters`. Instead the module documentation now says
that they are deprecated in favor of `Test.Hspec.Core.Formatters.V1`.
## Changes in 2.10.4 (2022-09-06)
- Make sure that whitespace-only diff output is colorized properly (#660)
## Changes in 2.10.3 (2022-09-05)
- Deprecate `Test.Hspec.Formatters` and `Test.Hspec.Core.Formatters`
- Disable (most) warnings in files generated by `hspec-discover` (#702)
## Changes in 2.10.2 (2022-09-03)
- Add `--strict`
- Add `--fail-on-pending`
- Do not depend on `clock`
## Changes in 2.10.1 (2022-08-22)
- Support for GHC 9.4.1
- Generated modules now include an export list
## Changes in 2.10.0.1 (2022-08-06)
- Fix a deadlock with nested failed `aroundAll`s (see #679)
## Changes in 2.10.0 (2022-05-12)
- Allow to transform the config in `SpecM`
- Allow to customize pretty-printing (via `configPrettyPrintFunction`)
- Add `getSpecDescriptionPath` (#637, thanks @srid)
- Do not treat `afterAll` as another spec item (fixes #414, #364, #363)
- Change type of `paramsSmallCheckDepth` to Maybe (see #345)
## Changes in 2.9.7
- Ensure that interim output does not interfere with output from tests This
facilitates using `print` when debugging test cases.
## Changes in 2.9.6
- Ensure color codes don't span newlines (#346, thanks @robx)
- Disable progress reporting on Buildkite
- Improve error messages on exceptions in hooks
## Changes in 2.9.5
- Assume `--color` by default when running on GitHub Actions. Use
`HSPEC_COLOR=no` or `--no-color` to opt out of this behavior.
- Disable progress reporting on GitHub Actions.
- Retain source formatting of numbers when pretty-printing.
## Changes in 2.9.4
- Compatibility with GHCJS (see #599)
## Changes in 2.9.3
- Pretty-print Haskell values in failure messages
## Changes in 2.9.2
- Show multi-line diffs for string literals (disable with `--no-pretty`)
## Changes in 2.9.1
- Recover unicode from `ExpectedButGot`
- Preserve unicode in `To rerun use: --match ...` output
## Changes in 2.9.0
- Add ASCII fallbacks to "checks" formatter (fixes #512)
- Use `checks` formatter by default (to restore the old behavior use
`--format specdoc`)
- Allow to extend the list of available formatters for `--format`
(`configAvailableFormatters`)
- Add `getExpectedTotalCount` to `Test.Hspec.Core.Formatters.V2`
- Rename `formatConfigItemCount` to `formatConfigExpectedTotalCount`
- Rename `configFastFail` to `configFailFast`
## Changes in 2.8.5
- hspec-core: Include help.txt in package tarball (close #568)
- hspec-discover: Require base >=4.5.0.0 (fixes #554)
## Changes in 2.8.4
- Better support for GHC 9.2.1
- Support for setting options by individual environment variables, e.g.
`HSPEC_COLOR=yes` will set `--color`
## Changes in 2.8.3
- Better support for `--color=auto` on Windows
- Add support for spec hooks to `hspec-discover` (via `SpecHook.hs`)
- Propagate exceptions from `Test.Hspec.Core.Format.monadic`
- Re-export `aroundAll_` from `Test.Hspec`
## Changes in 2.8.2
- Add `mapSubject` and `ignoreSubject`
## Changes in 2.8.1
- Take the environment variable `NO_COLOR` into account
## Changes in 2.8.0
- Add `--times` to print times for individual spec items
- Add `--print-slow-items`
- Use `-XNoImplicitPrelude` and do not rely on `base` for `hspec-discover`
generated test drivers. This ensures full compatibility with custom
preludes.
- Add new APIs for formatters `Test.Hspec.Core.Format` and
`Test.Hspec.Core.Formatters.V2`
- Add `getItemCount` to `Formatter` API
- Add `--qc-max-shrinks` (see #380)
- Add location information for failing `afterAll`-hooks
- hspec-discover: Deprecate `--no-main` and `--formatter` (use
`--module-name` instead) (#196)
- Remove `--verbose` option (this has been a noop since at least 2013)
- Remove `--out` option (use shell output redirection instead)
## Changes in 2.7.10
- Add a new formatter (can be used with `--format checks`)
- Add `exampleStarted` to `Formatter` API
## Changes in 2.7.9
- Re-export `aroundAll` and `aroundAllWith` from `Test.Hspec`
## Changes in 2.7.8
- Add `aroundAll` / `aroundAllWith` (see #255)
## Changes in 2.7.7
- Add `aroundAll_` (see #255)
- Correctly handle pending for `afterAll` actions
## Changes in 2.7.6
- Add `beforeAllWith` (see #447)
## Changes in 2.7.5
- Extract source locations from `NoMethodError` and `AssertionFailed`
## Changes in 2.7.4
- Apply `--randomize` recursively
## Changes in 2.7.3
- Add `--randomize`
## Changes in 2.7.2
- Interrupt diff calculation if it takes longer than two seconds (see #415)
## Changes in 2.7.1
- Add compatibility with QuickCheck 2.13.1 (see #410)
## Changes in 2.7.0
- Add `--focused-only` (see #390)
- Add `--fail-on-focused` (see #389)
## Changes in 2.6.1
- Add `Test.Hspec.Runner.runSpec` (see #216)
## Changes in 2.6.0
- Allow to focus individual spec items (see #319)
- Do not calculate diff on `--no-diff` (see #332)
- Remove deprecated module Test.Hspec.Core
## Changes in 2.5.9
- Extract source locations from RecConError (see #375)
## Changes in 2.5.8
- Add `modifyArgs` and `modifyMaxShrinks` to `Test.Hspec.QuickCheck` (see #380)
## Changes in 2.5.7
- GHC 8.6.1 related changes
## Changes in 2.5.6
- Compatibility with `QuickCheck-2.12`
## Changes in 2.5.5
- Use `module[line:column]` instead of `module:line:column` as default label
for `describe`/`it` (fixes #366)
## Changes in 2.5.4
- Show how to rerun individual spec items on test failures (see #205)
## Changes in 2.5.3
- Treat character escapes like `\NUL` as single tokens on `--diff` (see #351)
- Allow a `/` at the beginning and at the end of an absolute path that is
passed to `--match` or `--skip`
## Changes in 2.5.2
- Use module:line:column as default label for describe/it (see #250)
- Warn if user is affected by https://ghc.haskell.org/trac/ghc/ticket/13285 (see #329)
## Changes in 2.5.1
- Disable tests for Test.Hspec.Core.Timer (see #352)
## Changes in 2.5.0
- Add `sequential` (see #311)
- Add support for `--diff` when `shouldBe` is uesd with
`QuickCheck`-properties
- Add source locations when `shouldBe` is uesd with `QuickCheck` properties
- Print `QuickCheck` labels on success (see #297)
- Retain output of `verbose`, `label`, `collect`, `classify`, etc. for
`QuickCheck` properties (see #257)
- Extract source location from error / undefined (see #316)
- Parse source locations from pattern match failures
- Include source column when formatting source locations
- Colorize whitespaces with background color instead of foreground color with
`--diff`
- Run `Test.Hspec.Core.Formatters.exampleProgress` in `FormatM` instead of
`IO`
- Make sure that progress output is always cleared (fixes #301)
- Add location information to `pending` (not used by any formatter yet)
- Include duration for each spec item in new formatter API (see #315) (not yet exposed)
- Removed deprecated module `Test.Hspec.HUnit`, use
`Test.Hspec.Contrib.HUnit` instead
- Deprecate `--out`
- Remove `BestEffort` source locations
## Changes in 2.4.8
- compatibility with GHC 8.4.1-alpha3
## Changes in 2.4.7
- compatibility with `QuickCheck-2.11.3` and up (note that `QuickCheck`
versions `2.11` to `2.11.2` are not fully supported)
## Changes in 2.4.6
- compatibility with the upcoming version `4.11.0.0` of `base`
## Changes in 2.4.5
- `hspec-discover`: Sort specs using natural sort order
## Changes in 2.4.4
- Require quickcheck-io >= 0.2.0
## Changes in 2.4.3
- Read command-line options from environment variable `HSPEC_OPTIONS`
## Changes in 2.4.2
- Use `--diff` by default
- Add `--failure-report` (see #266)
## Changes in 2.4.1
- Compatibility with HUnit < 1.3
## Changes in 2.4.0
- Read command-line options from config files `~/.hspec` and `.hspec`
- Add support for `--diff`
- Add `xit`, `xspecify`, `xdescribe` and `xcontext` (see #252)
- Add `--rerun-all-on-success`
- Report exceptions in `beforeAll` operations only once
- Add indentation when actual/expected contain newlines (see #263)
- More graceful shutdown on ctrl-c (see #270)
- Run around-hook for Bool and Result (see #252)
- Include `CHANGES.markdown` in package tarball
Internal changes:
- Rename `Fail` constructor of `Result`-type to `Failure`
- Add `FailureReason` type
- Add `Test.Hspec.Core.Spec.safeEvaluateExample`
## Changes in 2.3.2
- Compatibility with HUnit 1.5
## Changes in 2.3.1
- Fix build for HUnit < 1.4
## Changes in 2.3.0
- Proper support for GHC 8 call stacks
## Changes in 2.2.4
- Compatibility with QuickCheck-2.9
## Changes in 2.2.3
- Make sure that `cabal haddock` works for `hspec-discover`
- Forward compatibility for HUnit 1.4
- Fix tests for GHC 8.0.1-rc1
## Changes in 2.2.2
- Fix compilation for GHC 8.0.1-rc1
## Changes in 2.2.1
- Make sure that Vim's default `errorformat` recognizes exact locations
- GHCJS compatibility
## Changes in 2.2.0
- Add source locations to test `Result`
## Changes in 2.1.10
- GHC 7.0.* compatibility
## Changes in 2.1.9
- Make use of GHC 7.10.2 source locations
- Add `--jobs`
## Changes in 2.1.8
- Depend on `hspec-expectations-0.7.0"
## Changes in 2.1.7
- Add `beforeAll_`
## Changes in 2.1.6
- If there were no previous failures, run all spec items on `--rerun`
## Changes in 2.1.5
- Compatibility with QuickCheck-2.8
## Changes in 2.1.4
- Make `hspec-discover` ignore modules with invalid module names, this fixes
issues with `flycheck`'s temporary files
## Changes in 2.1.3
- Format source locations like gcc does
## Changes in 2.1.2
- Re-export `before_` from `Test.Hspec`
## Changes in 2.1.1
- Add `before_`
- Add command-line option `--skip`
## Changes in 2.1.0
- Generalize `after_`, `afterAll_` and `around_`
## Changes in 2.0.2
- Indent error messages for failed examples (fixes #186)
- Export `defaultParams` from `Test.Hspec.Core.Example`
- Bring back `Test.Hspec.HUnit` and deprecate it to provide a smother upgrade
path
## Changes in 2.0.1
- Add missing extra source files to for `hspec-discover`
## Changes in 2.0.0
- Split package into `hspec`, `hspec-core` and `hspec-discover`
- Allow hooks (`before`, `around`, etc.) to pass arguments to spec items
- Do not print `-` in front of spec items with `specdoc` formatter
- Move `Test.Hspec.HUnit` to `hspec-contrib`
## Changes in 1.12.4
- Add `specGroup` and `specItem` to `Test.Hspec.Core`
- Deprecate `Test.Hspec.Core.it` and `Test.Hspec.Core.describe`
## Changes in 1.12.3
- Make `hspec-discover` work with `-XNoImplicitPrelude`
## Changes in 1.12.2
- Include `IOErrorType` when printing uncaught `IOException`s (see #204)
## Changes in 1.12.1
- Add `--module-name` option to `hspec-discover` (see #168)
## Changes in 1.12.0
- Add optional source location to spec items
- Move item requirement text from `SpecItem` constructor to `Item` data type
- Remove `BuildSpecs` constructor from `SpecTree`, having `runIO` this is not
really needed
- Add `mapSpecTree` to `Test.Hspec.Core`
- Add `afterAll` (see #188)
- Do not return `Result` from `hspecWith` and accept command-line options
(the old behavior is still available as `hspecWithResult`)
- Rename `configHandle` to `configOutputFile`
- Omit empty `describe` groups from report
- Do not pass position to `Formatter.exampleGroupStarted` (we can not support
this with the upcomming cleanup actions #188)
- Do not print empty lines before/after spec groups
- Deprecate `Test.Hspec.Formatters.newParagraph`
## Changes in 1.11.4
- Make test suite independent from QuickCheck seed (see #187)
## Changes in 1.11.3
- Depend on `hspec-expectations-0.6.1`
## Changes in 1.11.2
- Add `beforeAll`
## Changes in 1.11.1
- Add `specify` as an alias for `it`
## Changes in 1.11.0
- Add `BuildSpecs` constructor to internal `SpecTree` data structure. This
allows you to do `IO` while constructing the spec tree.
- Add `runIO`
## Changes in 1.10.0
- Do not use exception type to distinguish between synchronous/asynchronous
exceptions (thanks to Michael Snoyman)
- Remove `Example` instance for `Test.HUnit.Test` (#101), use
`Test.Hspec.HUnit.fromHUnitTest` instead.
- Do not reexport `property` from `Test.Hspec.QuickCheck`
- Move `ProgressCallback` out of `Params`
- Add show instance for `Params`
- Move requirement text from `Item` to `SpecItem` constructor
- Remove deprecated modules and functions
## Changes in 1.9.5
- Make sure that ctrl-c works properly with GHC 7.8.* and QuickCheck-2.6
## Changes in 1.9.4
- Compatibility with transformers-0.4.0.0
## Changes in 1.9.3
- Make internal Tree data structure more strict (#169)
## Changes in 1.9.2
- Print type of exceptions that are raised from QuickCheck properties (#94)
## Changes in 1.9.1
- Bring back compatibility with older versions of QuickCheck (#166)
## Changes in 1.9.0
- Depend on QuickCheck 2.7
## Changes in 1.8.3
- Do not use color if `TERM=dumb` (see #158)
## Changes in 1.8.2
- `hspec-discover` now accepts `--no-main` which results in a top-level spec
being generated instead of a test driver (thanks @DanielG)
- Make sure that `after` is run on failing tests (see #159)
## Changes in 1.8.1
- Add `shouldMatchList`
## Changes in 1.8.0
- Run `before`/`after`/`around` for each single check of a QuickCheck property
- Add `Test.Hspec.Core.mapSpecItem`
- Add `modifyMaxSuccess`, `modifyMaxDiscardRatio` and `modifyMaxSize` to
`Test.Hspec.QuickCheck`
- Don't fail if callback is not called in `around`
- `hspec-discover`: Remove `--nested` option
- `hspec-discover`: Ignore `Spec.hs`/`Spec.lhs`
## Changes in 1.7.2
- Add `after` and `around`
## Changes in 1.7.1
- Add `shouldContain` (thanks to Alfredo Di Napoli)
- When printing progress, skip total if it is 0
- Do not colorize the description/requirement in failure list
## Changes in 1.7.0
- Add `--depth` for use with `hspec-smallcheck`
## Change in 1.6.2
- Add `before`
- Add `--qc-max-discard` and `--qc-max-size`
## Changes in 1.6.1
- Allow to specify the output file with `--out`
## Changes in 1.6.0
- Add support for parallelization
- Change license to MIT
- Add MonadIO instance for FormatM
- Add support for custom formatters to hspec-discover
- Add hspecResult
- Rename `--re-run` to `--rerun` + add documentation (#95)
- Remove `configVerbose`
- Use same `--qc-max-success` on `--rerun` (#125)
- Add command-line option `--no-color`, `--color` does not accept arguments
anymore (#130)
## Changes in 1.5.4
- Make sure that QuickCheck is never chatty
- Make sure progress for QuickCheck examples is shown
## Changes in 1.5.3
- Print "Randomized with seed ..." only once
## Changes in 1.5.2
- Add `--seed`, it can be used to specify the seed for QuickCheck properties
- Reuse previous seed on `--re-run`
## Changes in 1.5.1
- Depend on quickcheck-io
## Changes in 1.5.0
- Allow to use expectations as QuickCheck properties (#80)
- Do not suppress output to `stdout`
- Change type of `pending` to `Expectation`, add `pendingWith` (#121)
- Add the `example` function, it fixes the type of an Expectation (#86)
- Rename `--fast-fail` to `--fail-fast` (for consistency with RSpec)
- Do not clutter Cabal test suite logs with QuickCheck output (#112)
- Skip redundant output from QuickCheck failure messages (#102)
## Changes in 1.4.5
- hspec-discover now discovers .lhs files, too
## Changes in 1.4.4
- Visually distinguish error message from requirements in the summary (#100)
- Export `formatException` from `Test.Hspec.Formatters`
- Add `--fast-fail` (#82)
- Print a summary on UserInterrupt/ctrl-c (#107)
## Changes in 1.4.3
- Add `--dry-run` (#111)
## Changes in 1.4.2
- Properly handle ctrl-c while running QuickCheck properties (#93)
- Default to `--color=always` when `--color` is used without argument (#106)
- treat `--qc-max-success` as an alias for `--maximum-generated-tests`
## Changes in 1.4.1
- Used CPU time is now only included in the test summary if run with
`--print-cpu-time`.
## Changes in 1.4.0
- We now have a manual at https://hspec.github.io/. The sources are in
`doc/`. It's still work in progress. Contributions are very welcome!
- The Haddock documentation now indicates the stability of each exposed
module. `Test.Hspec` is now considered stable.
- `hspec` now supports command-line options
- `--color` can be used to enable/disable colored output
- `--format` can be used to pick a specific formatter
- `--html` can be used to produce an HTML report
- `--maximum-generated-tests` can be used to specify QuickCheck's
`maxSuccess`
- `--match` only runs spec items that match a given string
- `--re-run` only runs spec items that previously failed. This is
undocumented,
experimental and only works within GHCi (use `:reload` / `:main`)!
- Runner functions exported from `Test.Hspec.Runner` new expect a monadic
spec.
- `fromHUnitTest` has been added. It can be used to run existing HUnit test
suites with Hspec.
- The `Example` instance for HUnit `Test`s has been deprecated.
`fromHUnitTest` can be used instead. The primary motivation is, that
`fromHUnitTest` gives more detailed reporting for nested HUnit test suites.
- `Test.Hspec.Monadic` has been deprecated, all functionality is available
through one of `Test.Hspec`, `Test.Hspec.Core` or `Test.Hspec.Runner`.
- More of Hspec's internals are now exposed from `Test.Hspec.Core`
- All runner functions for the core spec type (aka as non-monadic spec) have
been deprecated, use e.g. `Test.Hspec.hspec . fromSpecList` instead. The
motivation is to provide an API that does not expose colliding names.
- Some other stuff from `Test.Hspec.Core` that collides with other parts of
the API has been deprecated. Compatible alternatives are given in each
deprecation message.
- The default formatter now produces less whitespace (#73) + other minor
improvements
- The formatter API has been revamped.
- The exception type is now printed if an example fails due to an exception
(#50)
- The number of pending examples is now printed after each test run (#85)
- `--verbose` has been added (#87)
## Changes in 1.3.0
- `Test.Hspec` now re-exports the monadic API. If you still use the
non-monadic API, you can use `Test.Hspec.Core` as a drop-in replacement.
- `hspec-expectations`, a set of combinators that allow to express
expectations about the outcome of code examples, is now included with Hspec.
Have a look at the [README of `hspec-expectations`]
(https://github.com/sol/hspec-expectations#readme)
for a short introduction.
- `hspec-discover`, a mechanism for automatic spec discovery, is now an
official part of Hspec.
Have a look at [`hspec-discover`'s README]
(https://github.com/hspec/hspec/tree/main/hspec-discover#readme)
for a short introduction.
## Changes in 1.2.0
- `hspec` has been removed, and `hspecX` has been renamed to `hspec` (see
[#71](https://github.com/hspec/hspec/issues/71))
- `hHspec` now returns a summary of the test run.
- The time reporting after a test run is not colored anymore.
## Changes in 1.1.3
- `Test.Hspec` warns now about future changes: It will re-export
`Test.Hspec.Monadic` in the future. If you still use the non-monadic API,
you can either use `Test.Hspec.Core` as a drop-in replacement, or migrate your
code to the monadic API.
The monadic API is more stable and easier to use. Now is a good time to
switch!
- `Test.Hspec.Core` is now a proper superset of `Test.Hspec`
## Changes in 1.1.2
* All descriptions of nested examples are now included in summary for failing
examples
* `context` is now an alias for `describe`
## Changes in 1.1.1
* Specs from Test.Hspec.Monadic has been renamed to Spec. For backward
compatibility Specs is still kept as an alias.
## Changes in 1.1.0
### The reason for pending examples is now optional
With this change, both of the following code snippets work.
```haskell
it "some behavior" $
pending -- no reason given
```
```haskell
it "some other behavior" $
pending "some reason"
```
### Hspec does not rely on ExistentialQuantification anymore
### The type used to represent specs is now abstract
This should give more useful error messages when adapting old specs that use
the non-monadic API for `hspec-1.0`/`hspec-1.1`.
### Several internal types and functions have been deprecated
Those are internal functions, and they will be removed/hidden with the next
release. If you use any of those, update your code. If you really need them,
[open a ticket](https://github.com/hspec/hspec/issues) and describe your use
case.
## Changes in 1.0.0
### Hspec now re-uses QuickCheck's property function
`Test.Hspec.QuickCheck.property` is now simply a re-exports of
`Test.QuickCheck.property`. This has the advantage that you do not get a name
collision if you import both, `Test.Hspec.QuickCheck` and `Test.QuickCheck`.
### Better support for nested specs
*NOTE: This is a breaking change to the non-monadic API. The monadic API is
not affected.*
In some situations parent descriptions for nested specs were not included in
the generated report. Solving this required a change to the data structure
that is used to represent specs (it was not a proper tree, now it is).
#### Updating specs that use the non-monadic API
The runner functions (`hspec`, `hspecB` and `hspecX`) now take a list of
descriptions.
The following works with `hspec-0.9`, but not with `hspec-1.0`.
```haskell
main = hspecX $
describe "reverse" [
it "reverses a list" $
reverse [1, 2, 3] == [3, 2, 1],
it "gives the original list, if applied twice" $ property $
\xs -> reverse (reverse xs) == (xs :: [Int])
]
```
For `hspec-1.0`, you need to wrap it into a list.
```haskell
main = hspecX [
describe "reverse" [
it "reverses a list" $
reverse [1, 2, 3] == [3, 2, 1],
it "gives the original list, if applied twice" $ property $
\xs -> reverse (reverse xs) == (xs :: [Int])
]
]
```
Specs consisting of several *describes*, combined with `descriptions`, continue
to work unchanged. But `descriptions` is now a noop, and it will be removed in
a future release. So it is a good idea to drop it.
The following works with both `hspec-0.9` and `hspec-1.0`.
```haskell
main = hspecX $ descriptions [ -- descriptions is redundant
describe "Foo" [
it "has some behavior" True
]
, describe "Bar" [
it "has some behavior" True
]
]
```
But the following is recommended instead.
```haskell
main = hspecX [
describe "Foo" [
it "has some behavior" True
]
, describe "Bar" [
it "has some behavior" True
]
]
```
### A new monadic API for custom Formatters
For all the details, have a look at the [docs]
(https://hackage.haskell.org/packages/archive/hspec/latest/doc/html/Test-Hspec-Formatters.html).
### The total time required to run a spec is now included in the summary
In addition to the used CPU time, the total time required to run a spec is now
include in the summary. This is useful for specs that do non-CPU-intensive
stuff, or fork subprocesses.