1
from unittest import TextTestRunner as _TestRunner, TestResult as _TestResult
4
'''Helper to make python unit tests report the way that the Mozilla
5
unit test infrastructure expects tests to report.
10
from mozunit import MozTestRunner
12
if __name__ == '__main__':
13
unittest.main(testRunner=MozTestRunner())
16
class _MozTestResult(_TestResult):
17
def __init__(self, stream, descriptions):
18
_TestResult.__init__(self)
20
self.descriptions = descriptions
22
def getDescription(self, test):
24
return test.shortDescription() or str(test)
28
def addSuccess(self, test):
29
_TestResult.addSuccess(self, test)
30
filename = inspect.getfile(test.__class__)
31
testname = test._testMethodName
32
self.stream.writeln("TEST-PASS | %s | %s" % (filename, testname))
34
def addError(self, test, err):
35
_TestResult.addError(self, test, err)
36
self.printFail(test, err)
38
def addFailure(self, test, err):
39
_TestResult.addFailure(self, test, err)
40
self.printFail(test,err)
42
def printFail(self, test, err):
43
exctype, value, tb = err
44
# Skip test runner traceback levels
45
while tb and self._is_relevant_tb_level(tb):
48
self.stream.writeln("TEST-UNEXPECTED-FAIL | NO TRACEBACK |")
49
_f, _ln, _t = inspect.getframeinfo(tb)[:3]
50
self.stream.writeln("TEST-UNEXPECTED-FAIL | %s | line %d, %s: %s" %
51
(_f, _ln, _t, value.message))
53
def printErrorList(self):
54
for test, err in self.errors:
55
self.stream.writeln("ERROR: %s" % self.getDescription(test))
56
self.stream.writeln("%s" % err)
59
class MozTestRunner(_TestRunner):
60
def _makeResult(self):
61
return _MozTestResult(self.stream, self.descriptions)
63
result = self._makeResult()
65
result.printErrorList()