Safe Haskell | None |
---|---|
Language | Haskell2010 |
HTF's machine-readable output is a sequence of JSON messages. Each message is terminated by a newline followed by two semicolons followed again by a newline.
There are four types of JSON messages. Each JSON object has a "type" attribute denoting
this type. The types are: test-start
, test-end
, and test-list
, test-results
.
Their haskell representations are TestStartEventObj
, TestEndEventObj
, TestListObj
, and
TestResultsObj
. The corresponding JSON rendering is defined in this module.
- The
test-start
message denotes the start of a single test case. Example (whitespace inserted for better readability):
{"test": {"flatName": "Main:nonEmpty", "location": {"file": "Tutorial.hs", "line": 17}, "path": ["Main","nonEmpty"], "sort": "unit-test"}, "type":"test-start"}
- The
test-end
message denotes the end of a single test case. It contains information about the outcome of the test. Example:
{"result": "pass", "message":"", "test":{"flatName": "Main:nonEmpty", "location": {"file": "Tutorial.hs", "line": 17}, "path": ["Main","nonEmpty"], "sort": "unit-test"}, "wallTime": 0, // in milliseconds "type": "test-end", "location":null}
- The
test-results
message occurs after all tests have been run and summarizes their results. Example:
{"failures": 0, "passed": 4, "pending": 0, "wallTime": 39, // in milliseconds "errors": 0, "type":"test-results"}
- The
test-list
message contains all tests defined. It is used for the --list commandline options. Example:
{"tests": [{"flatName":"Main:nonEmpty","location":{"file":"Tutorial.hs","line":17},"path":["Main","nonEmpty"],"sort":"unit-test"}, {"flatName":"Main:empty","location":{"file":"Tutorial.hs","line":19},"path":["Main","empty"],"sort":"unit-test"}, {"flatName":"Main:reverse","location":{"file":"Tutorial.hs","line":22},"path":["Main","reverse"],"sort":"quickcheck-property"}, {"flatName":"Main:reverseReplay","location":{"file":"Tutorial.hs","line":24},"path":["Main","reverseReplay"],"sort":"quickcheck-property"}], "type":"test-list"}
For an exact specification, please have a look at the code of this module.
Documentation
data TestStartEventObj Source #
Instances
ToJSON TestStartEventObj Source # | |
Defined in Test.Framework.JsonOutput toJSON :: TestStartEventObj -> Value # toEncoding :: TestStartEventObj -> Encoding # toJSONList :: [TestStartEventObj] -> Value # toEncodingList :: [TestStartEventObj] -> Encoding # | |
HTFJsonObj TestStartEventObj Source # | |
Defined in Test.Framework.JsonOutput |
data TestEndEventObj Source #
Instances
ToJSON TestEndEventObj Source # | |
Defined in Test.Framework.JsonOutput toJSON :: TestEndEventObj -> Value # toEncoding :: TestEndEventObj -> Encoding # toJSONList :: [TestEndEventObj] -> Value # toEncodingList :: [TestEndEventObj] -> Encoding # | |
HTFJsonObj TestEndEventObj Source # | |
Defined in Test.Framework.JsonOutput |
data TestListObj Source #
Instances
ToJSON TestListObj Source # | |
Defined in Test.Framework.JsonOutput toJSON :: TestListObj -> Value # toEncoding :: TestListObj -> Encoding # toJSONList :: [TestListObj] -> Value # toEncodingList :: [TestListObj] -> Encoding # | |
HTFJsonObj TestListObj Source # | |
Defined in Test.Framework.JsonOutput |
data TestResultsObj Source #
Instances
ToJSON TestResultsObj Source # | |
Defined in Test.Framework.JsonOutput toJSON :: TestResultsObj -> Value # toEncoding :: TestResultsObj -> Encoding # toJSONList :: [TestResultsObj] -> Value # toEncodingList :: [TestResultsObj] -> Encoding # | |
HTFJsonObj TestResultsObj Source # | |
Defined in Test.Framework.JsonOutput |
mkTestListObj :: [(FlatTest, String)] -> TestListObj Source #
decodeObj :: HTFJsonObj a => a -> ByteString Source #
class ToJSON a => HTFJsonObj a Source #
Instances
HTFJsonObj TestResultsObj Source # | |
Defined in Test.Framework.JsonOutput | |
HTFJsonObj TestListObj Source # | |
Defined in Test.Framework.JsonOutput | |
HTFJsonObj TestEndEventObj Source # | |
Defined in Test.Framework.JsonOutput | |
HTFJsonObj TestStartEventObj Source # | |
Defined in Test.Framework.JsonOutput |