diff options
Diffstat (limited to 'meta/recipes-devtools/python/python3/run-ptest')
-rw-r--r-- | meta/recipes-devtools/python/python3/run-ptest | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest new file mode 100644 index 0000000000..bd3ea1107c --- /dev/null +++ b/meta/recipes-devtools/python/python3/run-ptest @@ -0,0 +1,56 @@ +#! /usr/bin/env python3 + +from test import support +from test import regrtest +import unittest +import sys + +# Define a test result class which outputs results in the desired format. +class ptestResult(unittest.TestResult): + def __init__(self, runner): + super(ptestResult, self).__init__() + self.runner = runner + + def addError(self, test, err): + super(ptestResult, self).addError(test, err) + self.runner.write("ERROR: %s: %s\n" % (str(test), str(err[1]))) + + def addSuccess(self, test): + super(ptestResult, self).addSuccess(test) + self.runner.write("PASS: %s\n" % str(test)) + + def addFailure(self, test, err): + super(ptestResult, self).addFailure(test, err) + self.runner.write("FAIL: %s: %s\n" % (str(test), str(err[1]))) + + def addSkip(self, test, reason): + super(ptestResult, self).addSkip(test, reason) + self.runner.write("SKIP: %s: %s\n" % (str(test), str(reason))) + + def addExpectedFailure(self, test, err): + super(ptestResult, self).addExpectedFailure(test, err) + self.runner.write("XFAIL: %s\n" % (str(test))) + + def addUnexpectedSuccess(self, test): + super(ptestResult, self).addUnexpectedSuccess(test) + self.runner.write("XPASS: %s\n" % str(test)) + +# Define a test runner which uses the above output class. +class ptestRunner: + def __init__(self, stream=sys.stderr): + self.stream = stream + + def write(self, message): + self.stream.write(message) + + def run(self, test): + result = ptestResult(self) + test(result) + return result + +# Replace the test runner in python's standard library 'test.support'. +support.BasicTestRunner = ptestRunner + +# Run the python regression test suite - the replacement test runner will be +# used. +regrtest.main() |