Safe Haskell | None |
---|---|
Language | Haskell2010 |
A module for producing JUnit style XML reports, for consumption by CI platforms like Jenkins. Please see the README at https://github.com/jwoudenberg/junit-xml.
Synopsis
- writeXmlReport :: FilePath -> [TestSuite] -> IO ()
- passed :: Text -> TestReport Passed
- skipped :: Text -> TestReport Skipped
- failed :: Text -> TestReport Failed
- errored :: Text -> TestReport Errored
- inSuite :: Text -> TestReport outcome -> TestSuite
- stdout :: Text -> TestReport outcome -> TestReport outcome
- stderr :: Text -> TestReport outcome -> TestReport outcome
- time :: Double -> TestReport outcome -> TestReport outcome
- failureMessage :: Text -> TestReport Failed -> TestReport Failed
- failureStackTrace :: [Text] -> TestReport Failed -> TestReport Failed
- errorMessage :: Text -> TestReport Errored -> TestReport Errored
- errorStackTrace :: [Text] -> TestReport Errored -> TestReport Errored
- data TestReport outcome
- data TestSuite
Writing test reports
Test report constructors
passed :: Text -> TestReport Passed Source #
Create a report for a passing test.
import Data.Function ((&))writeXmlReport
"report.xml" [ passed "A passing test" &stdout
"Test ran succesfully!" &stderr
"Warning: don't overcook the vegetables!" &time
0.003 &inSuite
"Test suite" ]
skipped :: Text -> TestReport Skipped Source #
Create a report for a skipped test.
import Data.Function ((&))writeXmlReport
"report.xml" [ skipped "A skipped test" &inSuite
"Test suite" ]
failed :: Text -> TestReport Failed Source #
Create a report for a failed test.
import Data.Function ((&))writeXmlReport
"report.xml" [ failed "A failing test" &stdout
"Running test..." &stderr
"Test failed: expected 3 slices of pizza but got one." &failureMessage
"Not enough pizza" &failureStackTrace
[Pizza, Pizzeria, Italy] &time
0.08 &inSuite
"Test suite" ]
errored :: Text -> TestReport Errored Source #
Create a report for a test that threw an error.
import Data.Function ((&))writeXmlReport
"report.xml" [ errored "A test that threw an error" &stdout
"Running test..." &stderr
"Unexpected exception: BedTime" &errorMessage
"Operation canceled due to BedTimeOut" &errorStackTrace
[Bed, Sleep, Night] &time
0.08 &inSuite
"Test suite" ]
inSuite :: Text -> TestReport outcome -> TestSuite Source #
Wrap a test report in a suite, allowing it to be added to the list of
reports passed to writeXmlReports
.
import Data.Function ((&))writeXmlReport
"report.xml" [passed
"Passed test" & inSuite "Some test suite" ]
Adding test report details
stdout :: Text -> TestReport outcome -> TestReport outcome Source #
Add the stdout produced running a test to the report for that test.
import Data.Function ((&))writeXmlReport
"report.xml" [passed
"A passing test" & stdout "Test ran succesfully!" &inSuite
"Test suite" ]
stderr :: Text -> TestReport outcome -> TestReport outcome Source #
Add the stderr produced running a test to the report for that test.
import Data.Function ((&))writeXmlReport
"report.xml" [failed
"A failing test" & stderr "Expected 4, but got 2." &inSuite
"Test suite" ]
time :: Double -> TestReport outcome -> TestReport outcome Source #
Add the running time of a test to the report for that test.
import Data.Function ((&))writeXmlReport
"report.xml" [passed
"A passing test" & time 0.003 &inSuite
"Test suite" ]
failureMessage :: Text -> TestReport Failed -> TestReport Failed Source #
Add an error message to the report of a failed test.
import Data.Function ((&))writeXmlReport
"report.xml" [ failed "A failing test" & failureMessage "Laundromat exceeds noise tolerance." &inSuite
"Test suite" ]
failureStackTrace :: [Text] -> TestReport Failed -> TestReport Failed Source #
Add a stack trace to the report of a failed test.
import Data.Function ((&))writeXmlReport
"report.xml" [ failed "A failing test" & failureStackTrace [AnkleClass, LegClass, LimbClass] &inSuite
"Test suite" ]
errorMessage :: Text -> TestReport Errored -> TestReport Errored Source #
Add an error message to the report for a test that threw an exception.
import Data.Function ((&))writeXmlReport
"report.xml" [ errored "A test that threw an error" & errorMessage TooMuchNetflixException &inSuite
"Test suite" ]
errorStackTrace :: [Text] -> TestReport Errored -> TestReport Errored Source #
Add a stack trace to a report for a test that threw an exception
import Data.Function ((&))writeXmlReport
"report.xml" [ errored "A test that threw an error" & errorStackTrace ["at closeCurtain line 3", "at goToSleep line 8"] &inSuite
"Test suite" ]
Helper types
data TestReport outcome Source #
The report for a single test case.