tasty-0.11.2.1: Modern and extensible testing framework

Safe Haskell | None
Language | Haskell2010

Test.Tasty.Providers

Description

API for test providers

Synopsis

- class Typeable t => IsTest t where
- testPassed :: String -> Result
- testFailed :: String -> Result
- data Result
- data Progress = Progress {
  - progressText :: String
  - progressPercent :: Float
  }
- type TestName = String
- data TestTree
- singleTest :: IsTest t => TestName -> t -> TestTree

# Documentation

class Typeable t => IsTest t where #

The interface to be implemented by a test provider.

The type `t` is the concrete representation of the test which is used by the provider.

Minimal complete definition

run, testOptions

Methods

run :: OptionSet -> t -> (Progress -> IO ()) -> IO Result #

Run the test

This method should cleanly catch any exceptions in the code to test, and return them as part of the `Result`, see `FailureReason` for an explanation. It is ok for `run` to raise an exception if there is a problem with the test suite code itself (for example, if a file that should contain example data or expected output is not found).

testOptions :: Tagged t [OptionDescription] #

The list of options that affect execution of tests of this type

testPassed #

Arguments

:: String | description (may be empty)
-> Result |

`Result` of a passed test

testFailed #

Arguments

:: String | description
-> Result |

`Result` of a failed test

data Result #

A test result

data Progress #

Test progress information.

This may be used by a runner to provide some feedback to the user while a long-running test is executing.

Constructors

Progress |
Fields progressText :: String textual information about the test's progress progressPercent :: Float `progressPercent` should be a value between 0 and 1. If it's impossible to compute the estimate, use 0.

type TestName = String #

The name of a test or a group of tests

data TestTree #

The main data structure defining a test suite.

It consists of individual test cases and properties, organized in named groups which form a tree-like hierarchy.

There is no generic way to create a test case. Instead, every test provider (tasty-hunit, tasty-smallcheck etc.) provides a function to turn a test case into a `TestTree`.

Groups can be created using `testGroup`.

singleTest :: IsTest t => TestName -> t -> TestTree #

Convert a test to a leaf of the `TestTree`