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()