tasty 0.11.0.4 → 0.11.1
raw patch · 7 files changed
+44/−53 lines, 7 files
Files
- CHANGELOG.md +5/−0
- Test/Tasty/Ingredients/ConsoleReporter.hs +2/−11
- Test/Tasty/Ingredients/ListTests.hs +3/−1
- Test/Tasty/Options.hs +30/−14
- Test/Tasty/Options/Core.hs +2/−20
- Test/Tasty/Patterns.hs +1/−6
- tasty.cabal +1/−1
CHANGELOG.md view
@@ -1,6 +1,11 @@ Changes ======= +Version 0.11.1+--------------++Introduce `mkOptionCLParser` and `mkFlagCLParser`+ Version 0.11.0.4 ----------------
Test/Tasty/Ingredients/ConsoleReporter.hs view
@@ -334,7 +334,7 @@ parseValue = fmap Quiet . safeRead optionName = return "quiet" optionHelp = return "Do not produce any output; indicate success only by the exit code"- optionCLParser = flagCLParser (Just 'q') (Quiet True)+ optionCLParser = mkFlagCLParser (short 'q') (Quiet True) -- | Report only failed tests newtype HideSuccesses = HideSuccesses Bool@@ -344,7 +344,7 @@ parseValue = fmap HideSuccesses . safeRead optionName = return "hide-successes" optionHelp = return "Do not print tests that passed successfully"- optionCLParser = flagCLParser Nothing (HideSuccesses True)+ optionCLParser = mkFlagCLParser mempty (HideSuccesses True) -- | When to use color on the output data UseColor@@ -357,15 +357,6 @@ parseValue = parseUseColor optionName = return "color" optionHelp = return "When to use colored output. Options are 'never', 'always' and 'auto' (default: 'auto')"- optionCLParser =- option parse- ( long name- <> help (untag (optionHelp :: Tagged UseColor String))- )- where- name = untag (optionName :: Tagged UseColor String)- parse = str >>=- maybe (readerError $ "Could not parse " ++ name) pure <$> parseValue -- | @useColor when isTerm@ decides if colors should be used, -- where @isTerm@ denotes where @stdout@ is a terminal device.
Test/Tasty/Ingredients/ListTests.hs view
@@ -8,6 +8,8 @@ import Data.Typeable import Data.Proxy+import Data.Monoid+import Options.Applicative import Test.Tasty.Core import Test.Tasty.Options@@ -22,7 +24,7 @@ parseValue = fmap ListTests . safeRead optionName = return "list-tests" optionHelp = return "Do not run the tests; just print their names"- optionCLParser = flagCLParser (Just 'l') (ListTests True)+ optionCLParser = mkFlagCLParser (short 'l') (ListTests True) -- | Obtain the list of all tests in the suite testsNames :: OptionSet -> TestTree -> [TestName]
Test/Tasty/Options.hs view
@@ -17,6 +17,8 @@ , OptionDescription(..) -- * Utilities , flagCLParser+ , mkFlagCLParser+ , mkOptionCLParser , safeRead ) where @@ -46,7 +48,9 @@ -- | 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).+ -- 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.@@ -62,16 +66,7 @@ -- failing parser into an always-succeeding one that may return an empty -- OptionSet.) optionCLParser :: Parser v- optionCLParser =- option parse- ( long name- <> help helpString- )- where- name = untag (optionName :: Tagged v String)- helpString = untag (optionHelp :: Tagged v String)- parse = str >>=- maybe (readerError $ "Could not parse " ++ name) pure <$> parseValue+ optionCLParser = mkOptionCLParser mempty data OptionValue = forall v . IsOption v => OptionValue v@@ -119,11 +114,32 @@ => Maybe Char -- ^ optional short flag -> v -- ^ non-default value (when the flag is supplied) -> Parser v-flagCLParser mbShort v = flag' v- ( foldMap short mbShort- <> long (untag (optionName :: Tagged v String))+flagCLParser mbShort = mkFlagCLParser (foldMap short mbShort)++-- | Command-line flag parser that takes additional option modifiers.+mkFlagCLParser+ :: forall v . IsOption v+ => Mod FlagFields v -- ^ option modifier+ -> v -- ^ non-default value (when the flag is supplied)+ -> Parser v+mkFlagCLParser mod v = flag' v+ ( long (untag (optionName :: Tagged v String)) <> help (untag (optionHelp :: Tagged v String))+ <> mod )++-- | Command-line option parser that takes additional option modifiers.+mkOptionCLParser :: forall v . IsOption v => Mod OptionFields v -> Parser v+mkOptionCLParser mod =+ option parse+ ( long name+ <> help (untag (optionHelp :: Tagged v String))+ <> mod+ )+ where+ name = untag (optionName :: Tagged v String)+ parse = str >>=+ maybe (readerError $ "Could not parse " ++ name) pure <$> parseValue -- | Safe read function. Defined here for convenience to use for -- 'parseValue'.
Test/Tasty/Options/Core.hs view
@@ -35,16 +35,7 @@ parseValue = mfilter onlyPositive . fmap NumThreads . safeRead optionName = return "num-threads" optionHelp = return "Number of threads to use for tests execution"- optionCLParser =- option parse- ( short 'j'- <> long name- <> help (untag (optionHelp :: Tagged NumThreads String))- )- where- name = untag (optionName :: Tagged NumThreads String)- parse = str >>=- maybe (readerError $ "Could not parse " ++ name) pure <$> parseValue+ optionCLParser = mkOptionCLParser (short 'j') -- | Filtering function to prevent non-positive number of threads onlyPositive :: NumThreads -> Bool@@ -67,16 +58,7 @@ <*> pure str optionName = return "timeout" optionHelp = return "Timeout for individual tests (suffixes: ms,s,m,h; default: s)"- optionCLParser =- option parse- ( short 't'- <> long name- <> help (untag (optionHelp :: Tagged Timeout String))- )- where- name = untag (optionName :: Tagged Timeout String)- parse = str >>=- maybe (readerError $ "Could not parse " ++ name) pure <$> parseValue+ optionCLParser = mkOptionCLParser (short 't') parseTimeout :: String -> Maybe Integer parseTimeout str =
Test/Tasty/Patterns.hs view
@@ -89,12 +89,7 @@ parseValue = Just . parseTestPattern optionName = return "pattern" optionHelp = return "Select only tests that match pattern"- optionCLParser =- option (fmap parseTestPattern str)- ( short 'p'- <> long (untag (optionName :: Tagged TestPattern String))- <> help (untag (optionHelp :: Tagged TestPattern String))- )+ optionCLParser = mkOptionCLParser (short 'p') -- | Parse a pattern parseTestPattern :: String -> TestPattern
tasty.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/ name: tasty-version: 0.11.0.4+version: 0.11.1 synopsis: Modern and extensible testing framework description: Tasty is a modern testing framework for Haskell. It lets you combine your unit tests, golden