Safe Haskell | None |
---|---|
Language | Haskell98 |
Test.Tasty.TH
Description
This module provides TemplateHaskell functions to automatically generate tasty TestTrees from specially named functions. See the README of the package for examples.
Important: due to to the GHC staging restriction, you must put any uses of these functions at the end of the file, or you may get errors due to missing definitions.
Synopsis
- testGroupGenerator :: ExpQ
- defaultMainGenerator :: ExpQ
- testGroupGeneratorFor :: String -> [String] -> ExpQ
- defaultMainGeneratorFor :: String -> [String] -> ExpQ
- extractTestFunctions :: FilePath -> IO [String]
- locationModule :: ExpQ
Documentation
testGroupGenerator :: ExpQ Source #
This function generates a TestTree
from functions in the current module.
The test tree is named after the current module.
The following definitions are collected by testGroupGenerator
:
- a test_something definition in the current module creates a sub-testGroup with the name "something"
- a prop_something definition in the current module is added as a QuickCheck property named "something"
- a case_something definition leads to a HUnit-Assertion test with the name "something"
Example usage:
prop_example :: Int -> Int -> Bool prop_example a b = a + b == b + a tests ::TestTree
tests = $(testGroupGenerator
)
defaultMainGenerator :: ExpQ Source #
Convenience function that directly generates an IO
action that may be used as the
main function. It's just a wrapper that applies defaultMain
to the TestTree
generated
by testGroupGenerator
.
Example usage:
-- properties, test cases, ....
main :: IO ()
main = $(defaultMainGenerator
)
testGroupGeneratorFor Source #
Arguments
:: String | The name of the test group itself |
-> [String] | The names of the functions which should be included in the test group |
-> ExpQ |
Like testGroupGenerator
, but generates a test group only including the specified function names.
The function names still need to follow the pattern of starting with one of prop_
, case_
or test_
.
defaultMainGeneratorFor Source #
Arguments
:: String | The name of the top-level test group |
-> [String] | The names of the functions which should be included in the test group |
-> ExpQ |
Like defaultMainGenerator
, but only includes the specific function names in the test group.
The function names still need to follow the pattern of starting with one of prop_
, case_
or test_
.
extractTestFunctions :: FilePath -> IO [String] Source #
Retrieves all function names from the given file that would be discovered by testGroupGenerator
.
locationModule :: ExpQ Source #
Extract the name of the current module.