#! /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()