tasty-1.4.2: Modern and extensible testing framework
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.Tasty.Options

Description

Extensible options. They are used for provider-specific settings, ingredient-specific settings and core settings (such as the test name pattern).

Synopsis

IsOption class

class Typeable v => IsOption v where #

An option is a data type that inhabits the IsOption type class.

Minimal complete definition

defaultValue, parseValue, optionName, optionHelp

Methods

defaultValue :: v #

The value to use if the option was not supplied explicitly

parseValue :: String -> Maybe v #

Try to parse an option value from a string. Consider using safeReadBool for boolean options and safeRead for numeric options.

optionName :: Tagged v String #

The option name. It is used to form the command line option name, for instance. Therefore, it had better not contain spaces or other fancy characters. It is recommended to use dashes instead of spaces.

optionHelp :: Tagged v String #

The option description or help string. This can be an arbitrary string.

showDefaultValue :: v -> Maybe String #

How a defaultValue should be displayed in the help string. Nothing (the default implementation) will result in nothing being displayed, while Just def will result in def being advertised as the default in the help string.

optionCLParser :: Parser v #

A command-line option parser.

It has a default implementation in terms of the other methods. You may want to override it in some cases (e.g. add a short flag) and flagCLParser, mkFlagCLParser and mkOptionCLParser might come in handy.

Even if you override this, you still should implement all the methods above, to allow alternative interfaces.

Do not supply a default value (e.g., with the value function) here for this parser! This is because if no value was provided on the command line we may lookup the option e.g. in the environment. But if the parser always succeeds, we have no way to tell whether the user really provided the option on the command line.

Similarly, do not use showDefaultWith here, as it will be ignored. Use the showDefaultValue method of IsOption instead.

Instances

Instances details
IsOption TestPattern # 
Instance details

Defined in Test.Tasty.Patterns

IsOption Timeout # 
Instance details

Defined in Test.Tasty.Options.Core

IsOption NumThreads # 
Instance details

Defined in Test.Tasty.Options.Core

IsOption ListTests # 
Instance details

Defined in Test.Tasty.Ingredients.ListTests

IsOption AnsiTricks # 
Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

IsOption UseColor #

Control color output

Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

IsOption HideSuccesses # 
Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

IsOption Quiet # 
Instance details

Defined in Test.Tasty.Ingredients.ConsoleReporter

Option sets and operations

data OptionSet #

A set of options. Only one option of each type can be kept.

If some option has not been explicitly set, the default value is used.

Instances

Instances details
Semigroup OptionSet # 
Instance details

Defined in Test.Tasty.Options

Monoid OptionSet #

Later options override earlier ones

Instance details

Defined in Test.Tasty.Options

setOption :: IsOption v => v -> OptionSet -> OptionSet #

Set the option value

changeOption :: forall v. IsOption v => (v -> v) -> OptionSet -> OptionSet #

Change the option value

lookupOption :: forall v. IsOption v => OptionSet -> v #

Query the option value

singleOption :: IsOption v => v -> OptionSet #

Create a singleton OptionSet

data OptionDescription where #

The purpose of this data type is to capture the dictionary corresponding to a particular option.

Constructors

Option :: IsOption v => Proxy v -> OptionDescription 

uniqueOptionDescriptions :: [OptionDescription] -> [OptionDescription] #

Remove duplicated OptionDescription, preserving existing order otherwise

Since: 1.4.1

Utilities

flagCLParser #

Arguments

:: forall v. IsOption v 
=> Maybe Char

optional short flag

-> v

non-default value (when the flag is supplied)

-> Parser v 

Command-line parser to use with flags

mkFlagCLParser #

Arguments

:: forall v. IsOption v 
=> Mod FlagFields v

option modifier

-> v

non-default value (when the flag is supplied)

-> Parser v 

Command-line flag parser that takes additional option modifiers.

mkOptionCLParser :: forall v. IsOption v => Mod OptionFields v -> Parser v #

Command-line option parser that takes additional option modifiers.

safeRead :: Read a => String -> Maybe a #

Safe read function. Defined here for convenience to use for parseValue.

safeReadBool :: String -> Maybe Bool #

Parse a Bool case-insensitively