úÎiÌcí7      !"#$%&'()*+,-./0123456  Safe-Inferred7BTake a list of actions and execute them in parallel, no more than n  at the same time 7#maximum number of parallel threads list of actions to execute 8778None ;The purpose of this data type is to capture the dictionary ' corresponding to a particular option. <A set of options. Only one option of each type can be kept. GIf some option has not been explicitly set, the default value is used. +An option is a data type that inhabits the  type class. ;The value to use if the option was not supplied explicitly +Try to parse an option value from a string FThe option name. It is used to form the command line option name, for F instance. Therefore, it had better not contain spaces or other fancy @ characters. It is recommended to use dashes instead of spaces. @The option description or help string. This can be an arbitrary  string. A command-line option parser. ?It has a default implementation in terms of the other methods. D You may want to override it in some cases (e.g. add a short flag). FEven if you override this, you still should implement all the methods ) above, to allow alternative interfaces. Set the option value Query the option value Change the option value <Safe read function. Defined here for convenience to use for  . 9$Later options override earlier ones :;< 9    :;< 9None ;A pattern to filter tests. For the syntax description, see   4http://documentup.com/feuerbach/tasty#using-patterns !A pattern that matches anything. Parse a pattern FTest a path (which is the sequence of group titles, possibly followed & by the test title) against a pattern  =>?@ABCDEFGHIJKLMNOPQ  >=?@ABCEDFJIHGKLMNOPQNone4Number of parallel threads to use for running tests The list of all core options RRNoneS)Useful wrapper for use with foldTestTree /The main data structure defining a test suite. HIt consists of individual test cases and properties, organized in named * groups which form a tree-like hierarchy. CThere is no generic way to create a test case. Instead, every test F provider (tasty-hunit, tasty-smallcheck etc.) provides a function to  turn a test case into a . Groups can be created using %.  Add some options to child tests 1Assemble a number of tests into a cohesive group &A single test of some particular type 'The name of a test or a group of tests 4The interface to be implemented by a test provider.  The type t= is the concrete representation of the test which is used by  the provider.  Run the test @The list of options that affect execution of tests of this type Test progress information. HThis may be used by a runner to provide some feedback to the user while # a long-running test is executing. "textual information about the test' s progress  ) should be a value between 0 and 1. If it' s impossible ! to compute the estimate, use 0. !A test result ## should be T for a passed test and U for  a failed one. $$. may contain some details about the test. For  a passed test it'6s ok to leave it empty. Providers like SmallCheck and D QuickCheck use it to provide information about how many tests were  generated. For a failed test, $ should typically provide more  information about the failure. %3Create a named group of test cases or other groups &&Fold a test tree into a single value. CApart from pure convenience, this function also does the following  useful things:  ? Keeping track of the current options (which may change due to   nodes) 9 Filtering out the tests which do not match the patterns FThus, it is preferred to an explicit recursive traversal of the tree. >Note: right now, the patterns are looked up only once, and won't be 8 affected by the subsequent option changes. This shouldn't be a problem 9 in practice; OTOH, this behaviour may be changed later. V@Get the list of options that are relevant for a given test tree SWXoptions the test to run a callback to report progress  !"#$%&interpret a single test interpret a test group initial options VYSWX !"#$%&V SWX !"#$%&VYNone' Convert a test to a leaf of the  ' !"#$'!"#$ '' None (A (: is responsible for user interaction during the test run. It is provided with the )$, so the tests are already launched E and all it needs to do is notifying the user about the progress and 1 then displaying the overall results in the end. It is also the runner'-s responsibility to exit with an appropriate  exit code. )GMapping from test numbers (starting from 0) to their status variables. CThis is what a runner uses to analyse and display progress, and to  detect when tests finish. ZInt is the first free index IntMap maps test indices to:  the action to launch the test * the status variable of the launched test *Current status of a test +"test finished with a given result ,(test threw an exception and was aborted -test is being run .!test has not started running yet [Start executing a test \ Prepare the test tree to be run ]7Start running all the tests in the TestMap in parallel /FStart running all the tests in a test tree in parallel. The number of  threads is determined by the  option. BReturn a map from the test number (starting from 0) to its status  variable. ()^Z*+,-.[Cthe action to execute the test, which takes a progress callback as  a parameter variable to write status to \]/()*+,-./()^Z*.-,+[\]/ None_,Compute the amount of space needed to align OKs and FAILs 0A simple console UI `abcdefghijkl_0mnopqr0`bacdefghijkl_0mnopqr None1EGenerate a command line parser for all the options relevant for this  test tree. Also includes . 2BGenerate a command line parser from a list of option descriptions 3FParse the command line arguments and run the tests using the provided  runner 123123123None &()*+,-./0123&123*.-,+)(/0 None4FParse the command line arguments and run the tests using the standard  console runner 5;Locally adjust the option value for the given test subtree 68Locally set the option value for the given test subtree 456%3456%4356456s   !"#$%&'(()*++,-./0 1 2 3 4 5 6 7 8 9 : ; <=>?@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\Z[]^Y_` a b c d a e f g f h i i j k l m n o p q r s t u vw tasty-0.1Test.Tasty.OptionsTest.Tasty.RunnersTest.Tasty.Providers Test.TastyTest.Tasty.ParallelTest.Tasty.PatternsTest.Tasty.CoreOptionsTest.Tasty.CoreTest.Tasty.Run Test.Tasty.UITest.Tasty.CmdLineOptionDescriptionOption OptionSetIsOption defaultValue parseValue optionName optionHelpoptionCLParser setOption lookupOption changeOptionsafeRead TestPattern noPatternparseTestPatterntestPatternMatches NumThreads getNumThreads coreOptionsTestTreePlusTestOptions TestGroup SingleTestTestNameIsTestrun testOptionsProgress progressTextprogressPercentResultresultSuccessfulresultDescription testGroup foldTestTree singleTestRunner StatusMapStatusDone Exception Executing NotStartedlaunchTestTreerunUItreeOptionParser optionParserdefaultMainWithRunner defaultMain adjustOption localOption runInParallel myForkFinally$fMonoidOptionSet OptionValue NoPatterntp_categories_only tp_negated tp_match_mode tp_tokensTestPatternMatchMode PathMatchMode TestMatchModeToken LiteralTokenDoubleWildcardToken WildcardToken SlashTokentokenizebuildTokenRegexregexEscapeChar pathToStringdropLast$fIsOptionTestPattern$fReadTestPattern$fIsOptionNumThreads AppMonoidghc-prim GHC.TypesTrueFalsegetTreeOptionsgetApp$fMonoidAppMonoidTestMap executeTest createTestMap launchTestscomputeAlignmentMaximum MinusInfinityM RunnerStateix nestedLevelfailures initialState indentSizeindent formatDescfailokinfoOkinfoFailoutput$fMonoidMaximum