aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python3/run-ptest
blob: bd3ea1107cb0895751da365500030b130bea93f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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()