tasty-1.5.3: Modern and extensible testing framework

Safe Haskell | None
Language | Haskell2010

Test.Tasty.Ingredients.ConsoleReporter

Contents

- Internals
  - Output colouring
  - Test failure statistics
  - Outputting results

Description

Console reporter ingredient.

Since: 0.11.3

Synopsis

- consoleTestReporter :: Ingredient
- consoleTestReporterWithHook :: ([TestName] -> Result -> IO Result) -> Ingredient
- newtype Quiet = Quiet Bool
- newtype HideSuccesses = HideSuccesses Bool
- newtype MinDurationToReport = MinDurationToReport {
  - minDurationMicros :: Integer
  }
- newtype AnsiTricks = AnsiTricks {
  - getAnsiTricks :: Bool
  }
- data UseColor
  - = Never
  - | Always
  - | Auto
- useColor :: UseColor -> Bool -> Bool
- data Statistics = Statistics {
  - statTotal :: !Int
  - statFailures :: !Int
  }
- computeStatistics :: StatusMap -> IO Statistics
- printStatistics :: (?colors :: Bool) => Statistics -> Time -> IO ()
- printStatisticsNoTime :: (?colors :: Bool) => Statistics -> IO ()
- data TestOutput
  - = PrintTest String (IO ()) (Progress -> IO ()) (Result -> IO ())
  - | PrintHeading String (IO ()) TestOutput
  - | Skip
  - | Seq TestOutput TestOutput
- buildTestOutput :: (?colors :: Bool) => OptionSet -> TestTree -> TestOutput
- foldTestOutput :: Monoid b => (String -> IO () -> IO Result -> (Result -> IO ()) -> b) -> (String -> IO () -> b -> b) -> TestOutput -> StatusMap -> b
- withConsoleFormat :: (?colors :: Bool) => ConsoleFormatPrinter

# Documentation

consoleTestReporter :: Ingredient Source #

A simple console UI.

Since: 0.4

consoleTestReporterWithHook :: ([TestName] -> Result -> IO Result) -> Ingredient Source #

A simple console UI with a hook to postprocess results, depending on their names and external conditions (e. g., its previous outcome, stored in a file). Names are listed in reverse order: from test's own name to a name of the outermost test group.

Since: 1.4.2

newtype Quiet Source #

Do not print test results (see README for details).

Since: 0.8

Constructors

Quiet Bool |

#### Instances

Instances details

Eq Quiet Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (==) :: Quiet -> Quiet -> Bool Source # (/=) :: Quiet -> Quiet -> Bool Source #
Ord Quiet Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods compare :: Quiet -> Quiet -> Ordering Source # (<) :: Quiet -> Quiet -> Bool Source # (<=) :: Quiet -> Quiet -> Bool Source # (>) :: Quiet -> Quiet -> Bool Source # (>=) :: Quiet -> Quiet -> Bool Source # max :: Quiet -> Quiet -> Quiet Source # min :: Quiet -> Quiet -> Quiet Source #
IsOption Quiet Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods defaultValue :: Quiet Source # parseValue :: String -> Maybe Quiet Source # optionName :: Tagged Quiet String Source # optionHelp :: Tagged Quiet String Source # showDefaultValue :: Quiet -> Maybe String Source # optionCLParser :: Parser Quiet Source #

newtype HideSuccesses Source #

Report only failed tests.

At the moment, this option only works globally. As an argument to `localOption`, it does nothing.

Since: 0.8

Constructors

HideSuccesses Bool |

#### Instances

Instances details

Eq HideSuccesses Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (==) :: HideSuccesses -> HideSuccesses -> Bool Source # (/=) :: HideSuccesses -> HideSuccesses -> Bool Source #
Ord HideSuccesses Source # |

Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

Methods

compare :: HideSuccesses -> HideSuccesses -> Ordering Source #

(<) :: HideSuccesses -> HideSuccesses -> Bool Source #

(<=) :: HideSuccesses -> HideSuccesses -> Bool Source #

(>) :: HideSuccesses -> HideSuccesses -> Bool Source #

(>=) :: HideSuccesses -> HideSuccesses -> Bool Source #

max :: HideSuccesses -> HideSuccesses -> HideSuccesses Source #

min :: HideSuccesses -> HideSuccesses -> HideSuccesses Source #

IsOption HideSuccesses Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods defaultValue :: HideSuccesses Source # parseValue :: String -> Maybe HideSuccesses Source # optionName :: Tagged HideSuccesses String Source # optionHelp :: Tagged HideSuccesses String Source # showDefaultValue :: HideSuccesses -> Maybe String Source # optionCLParser :: Parser HideSuccesses Source #

newtype MinDurationToReport Source #

The minimum amount of time a test can take before tasty prints timing information.

Since: 1.5

Constructors

MinDurationToReport |

Fields

- minDurationMicros :: Integer

#### Instances

Instances details

Eq MinDurationToReport Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (==) :: MinDurationToReport -> MinDurationToReport -> Bool Source # (/=) :: MinDurationToReport -> MinDurationToReport -> Bool Source #
Ord MinDurationToReport Source # |

Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

Methods

compare :: MinDurationToReport -> MinDurationToReport -> Ordering Source #

(<) :: MinDurationToReport -> MinDurationToReport -> Bool Source #

(<=) :: MinDurationToReport -> MinDurationToReport -> Bool Source #

(>) :: MinDurationToReport -> MinDurationToReport -> Bool Source #

(>=) :: MinDurationToReport -> MinDurationToReport -> Bool Source #

max :: MinDurationToReport -> MinDurationToReport -> MinDurationToReport Source #

min :: MinDurationToReport -> MinDurationToReport -> MinDurationToReport Source #

IsOption MinDurationToReport Source # |

Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

Methods

defaultValue :: MinDurationToReport Source #

parseValue :: String -> Maybe MinDurationToReport Source #

optionName :: Tagged MinDurationToReport String Source #

optionHelp :: Tagged MinDurationToReport String Source #

showDefaultValue :: MinDurationToReport -> Maybe String Source #

optionCLParser :: Parser MinDurationToReport Source #

newtype AnsiTricks Source #

By default, when the option `--hide-successes` is given and the output goes to an ANSI-capable terminal, we employ some ANSI terminal tricks to display the name of the currently running test and then erase it if it succeeds.

These tricks sometimes fail, however—in particular, when the test names happen to be longer than the width of the terminal window. See

- https://github.com/UnkindPartition/tasty/issues/152
- https://github.com/UnkindPartition/tasty/issues/250

When that happens, this option can be used to disable the tricks. In that case, the test name will be printed only once the test fails.

Since: 1.3

Constructors

AnsiTricks |

Fields

- getAnsiTricks :: Bool

#### Instances

Instances details

IsOption AnsiTricks Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods defaultValue :: AnsiTricks Source # parseValue :: String -> Maybe AnsiTricks Source # optionName :: Tagged AnsiTricks String Source # optionHelp :: Tagged AnsiTricks String Source # showDefaultValue :: AnsiTricks -> Maybe String Source # optionCLParser :: Parser AnsiTricks Source #

# Internals

The following functions and datatypes are internals that are exposed to simplify the task of rolling your own custom console reporter UI.

## Output colouring

data UseColor Source #

When to use color on the output

Since: 0.11.3

Constructors

Never |
Always |
Auto | Only if stdout is an ANSI color supporting terminal

#### Instances

Instances details

Eq UseColor Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (==) :: UseColor -> UseColor -> Bool Source # (/=) :: UseColor -> UseColor -> Bool Source #
Ord UseColor Source # |

Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

Methods

compare :: UseColor -> UseColor -> Ordering Source #

(<) :: UseColor -> UseColor -> Bool Source #

(<=) :: UseColor -> UseColor -> Bool Source #

(>) :: UseColor -> UseColor -> Bool Source #

(>=) :: UseColor -> UseColor -> Bool Source #

max :: UseColor -> UseColor -> UseColor Source #

min :: UseColor -> UseColor -> UseColor Source #

IsOption UseColor Source # | Control color output
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods defaultValue :: UseColor Source # parseValue :: String -> Maybe UseColor Source # optionName :: Tagged UseColor String Source # optionHelp :: Tagged UseColor String Source # showDefaultValue :: UseColor -> Maybe String Source # optionCLParser :: Parser UseColor Source #

useColor :: UseColor -> Bool -> Bool Source #

`useColor when isTerm` decides if colors should be used, where `isTerm` indicates whether `stdout` is a terminal device.

Since: 0.11.3

## Test failure statistics

data Statistics Source #

Track the number of tests that were run and failures of a `TestTree` or sub-tree.

Since: 0.11.3

Constructors

Statistics |

Fields

- statTotal :: !Int

  Number of active tests (e.g., that match the pattern specified on the commandline), inactive tests are not counted.

- statFailures :: !Int

  Number of active tests that failed.

#### Instances

Instances details

Monoid Statistics Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods mempty :: Statistics Source # mappend :: Statistics -> Statistics -> Statistics Source # mconcat :: [Statistics] -> Statistics Source #
Semigroup Statistics Source # | Since: 0.12.0.1
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (<>) :: Statistics -> Statistics -> Statistics Source # sconcat :: NonEmpty Statistics -> Statistics Source # stimes :: Integral b => b -> Statistics -> Statistics Source #

computeStatistics :: StatusMap -> IO Statistics Source #

`computeStatistics` computes a summary `Statistics` for a given state of the `StatusMap`. Useful in combination with `printStatistics`.

Since: 1.2.3

printStatistics :: (?colors :: Bool) => Statistics -> Time -> IO () Source #

`printStatistics` reports test success/failure statistics and time it took to run. The `Time` results is intended to be filled in by the `TestReporter` callback. The `colors` ImplicitParam controls whether coloured output is used.

Since: 0.11.3

printStatisticsNoTime :: (?colors :: Bool) => Statistics -> IO () Source #

`printStatisticsNoTime` reports test success/failure statistics The `colors` ImplicitParam controls whether coloured output is used.

Since: 0.12

## Outputting results

data TestOutput Source #

`TestOutput` is an intermediary between output formatting and output printing. It lets us have several different printing modes (normal; print failures only; quiet).

Since: 0.12

Constructors

PrintTest | Printing a test.

Fields

- String

  Name of the test.

- (IO ())

  Action that prints the test name.

- (Progress -> IO ())

  Action that prints the progress of the test. Since: 1.5

- (Result -> IO ())

  Action that renders the result of the test.

PrintHeading | Printing a test group.

Fields

- String

  Name of the test group

- (IO ())

  Action that prints the heading of a test group.

- TestOutput

  The `TestOutput` for that test group.

Skip | Inactive test (e.g. not matching the current pattern).
Seq TestOutput TestOutput | Two sets of `TestOutput` on the same level.

#### Instances

Instances details

Monoid TestOutput Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods mempty :: TestOutput Source # mappend :: TestOutput -> TestOutput -> TestOutput Source # mconcat :: [TestOutput] -> TestOutput Source #
Semigroup TestOutput Source # |
Instance details Defined in Test.Tasty.Ingredients.ConsoleReporter Methods (<>) :: TestOutput -> TestOutput -> TestOutput Source # sconcat :: NonEmpty TestOutput -> TestOutput Source # stimes :: Integral b => b -> TestOutput -> TestOutput Source #

buildTestOutput :: (?colors :: Bool) => OptionSet -> TestTree -> TestOutput Source #

Build the `TestOutput` for a `TestTree` and `OptionSet`. The `colors` ImplicitParam controls whether the output is colored.

Since: 0.11.3

foldTestOutput Source #

Arguments

:: Monoid b |
=> (String -> IO () -> IO Result -> (Result -> IO ()) -> b) | Eliminator for test cases. The `IO ()` prints the testname. The `IO Result` blocks until the test is finished, returning it's `Result`. The `Result -> IO ()` function prints the formatted output.
-> (String -> IO () -> b -> b) | Eliminator for test groups. The `IO ()` prints the test group's name. The `b` is the result of folding the test group.
-> TestOutput | The `TestOutput` being rendered.
-> StatusMap | The `StatusMap` received by the `TestReporter`
-> b |

Fold function for the `TestOutput` tree into a `Monoid`.

Since: 0.12

withConsoleFormat :: (?colors :: Bool) => ConsoleFormatPrinter Source #

Run action with console configured for a specific output format

This function does not apply any output formats if colors are disabled at command line or console detection.

Can be used by providers that wish to provider specific result details printing, while re-using the tasty formats and coloring logic.

Since: 1.3.1