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.


data TestObj Source