hspec-core-2.10.0: A Testing Framework for Haskell
Stabilityprovisional
Safe HaskellNone
LanguageHaskell2010

Test.Hspec.Core.Runner

Description

 
Synopsis

Running a spec

To run a spec hspec performs a sequence of steps:

  1. Evaluate a Spec to a forest of SpecTrees
  2. Read config values from the command-line, config files and the process environment
  3. Execute each spec item of the forest and report results to stdout
  4. Exit with exitFailure if at least on spec item fails

The four primitives evalSpec, readConfig, runSpecForest and evaluateResult each perform one of these steps respectively.

hspec is defined in terms of these primitives:

hspec = evalSpec defaultConfig >=> \ (config, spec) ->
      getArgs
  >>= readConfig config
  >>= withArgs [] . runSpecForest spec
  >>= evaluateResult

If you need more control over how a spec is run use these primitives individually.

hspec :: Spec -> IO () Source #

Run a given spec and write a report to stdout. Exit with exitFailure if at least one spec item fails.

Note: hspec handles command-line options and reads config files. This is not always desirable. Use evalSpec and runSpecForest if you need more control over these aspects.

evalSpec :: Config -> SpecWith a -> IO (Config, [SpecTree a]) Source #

Evaluate a Spec to a forest of SpecTrees. This does not execute any spec items, but it does run any IO that is used during spec construction time (see runIO).

A Spec may modify a Config through modifyConfig. These modifications are applied to the given config (the first argument).

Since: 2.10.0

runSpecForest :: [SpecTree ()] -> Config -> IO SpecResult Source #

runSpecForest is the most basic primitive to run a spec. hspec is defined in terms of runSpecForest:

hspec = evalSpec defaultConfig >=> \ (config, spec) ->
      getArgs
  >>= readConfig config
  >>= withArgs [] . runSpecForest spec
  >>= evaluateResult

Since: 2.10.0

Config

data ColorMode Source #

Instances

Instances details
Eq ColorMode Source # 
Instance details

Defined in Test.Hspec.Core.Config.Definition

Show ColorMode Source # 
Instance details

Defined in Test.Hspec.Core.Config.Definition

type Path = ([String], String) Source #

A Path describes the location of a spec item within a spec tree.

It consists of a list of group descriptions and a requirement description.

configAddFilter :: (Path -> Bool) -> Config -> Config Source #

Add a filter predicate to config. If there is already a filter predicate, then combine them with ||.

readConfig :: Config -> [String] -> IO Config Source #

readConfig parses config options from several sources and constructs a Config value. It takes options from:

  1. ~/.hspec (a config file in the user's home directory)
  2. .hspec (a config file in the current working directory)
  3. the environment variable HSPEC_OPTIONS
  4. the provided list of command-line options (the second argument to readConfig)

(precedence from low to high)

When parsing fails then readConfig writes an error message to stderr and exits with exitFailure.

When --help is provided as a command-line option then readConfig writes a help message to stdout and exits with exitSuccess.

A common way to use readConfig is:

getArgs >>= readConfig defaultConfig

Result

Spec Result

data SpecResult Source #

Instances

Instances details
Eq SpecResult Source # 
Instance details

Defined in Test.Hspec.Core.Runner.Result

Show SpecResult Source # 
Instance details

Defined in Test.Hspec.Core.Runner.Result

Result Item

data ResultItem Source #

Instances

Instances details
Eq ResultItem Source # 
Instance details

Defined in Test.Hspec.Core.Runner.Result

Show ResultItem Source # 
Instance details

Defined in Test.Hspec.Core.Runner.Result

Result Item Status

Legacy

The following primitives are deprecated. Use runSpecForest instead.

hspecWith :: Config -> Spec -> IO () Source #

Run given spec with custom options. This is similar to hspec, but more flexible.

hspecResult :: Spec -> IO Summary Source #

Run given spec and returns a summary of the test run.

Note: hspecResult does not exit with exitFailure on failing spec items. If you need this, you have to check the Summary yourself and act accordingly.

hspecWithResult :: Config -> Spec -> IO Summary Source #

Run given spec with custom options and returns a summary of the test run.

Note: hspecWithResult does not exit with exitFailure on failing spec items. If you need this, you have to check the Summary yourself and act accordingly.

runSpec :: Spec -> Config -> IO Summary Source #

Note: runSpec is deprecated. It ignores any modifications applied through modifyConfig. Use evalSpec and runSpecForest instead.

Summary

data Summary Source #

Summary of a test run.

Constructors

Summary 

Instances

Instances details
Eq Summary Source # 
Instance details

Defined in Test.Hspec.Core.Runner

Methods

(==) :: Summary -> Summary -> Bool #

(/=) :: Summary -> Summary -> Bool #

Show Summary Source # 
Instance details

Defined in Test.Hspec.Core.Runner

Semigroup Summary Source # 
Instance details

Defined in Test.Hspec.Core.Runner

Monoid Summary Source # 
Instance details

Defined in Test.Hspec.Core.Runner

isSuccess :: Summary -> Bool Source #

True if the given Summary indicates that there were no failures, False otherwise.

evaluateSummary :: Summary -> IO () Source #

Exit with exitFailure if the given Summary indicates that there was at least one failure.