HTF- The Haskell Test Framework

Safe HaskellNone




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"},
  • The test-end message denotes the end of a single test case. It contains information about the outcome of the test. Example:
{"result": "pass",
 "test":{"flatName": "Main:nonEmpty",
         "location": {"file": "Tutorial.hs", "line": 17},
         "path": ["Main","nonEmpty"],
         "sort": "unit-test"},
 "wallTime": 0,  // in milliseconds
 "type": "test-end",
  • 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,
  • 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"},

For an exact specification, please have a look at the code of this module.


Orphan instances