Safe Haskell | None |
---|---|
Language | Haskell98 |
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.
- 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
)
:: 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
:: 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
.
Extract the name of the current module.