|
2 | 2 | import sys
|
3 | 3 | import time
|
4 | 4 |
|
5 |
| -from .unittest import TextTestRunner |
| 5 | +from .unittest import TextTestRunner, TestProgram |
6 | 6 | from .result import _XMLTestResult
|
7 | 7 |
|
8 | 8 | # see issue #74, the encoding name needs to be one of
|
@@ -113,3 +113,34 @@ def run(self, test):
|
113 | 113 | pass
|
114 | 114 |
|
115 | 115 | return result
|
| 116 | + |
| 117 | + |
| 118 | +class XMLTestProgram(TestProgram): |
| 119 | + output = None |
| 120 | + |
| 121 | + def __init__(self, *args, **kwargs): |
| 122 | + kwargs.setdefault('testRunner', XMLTestRunner) |
| 123 | + super(XMLTestProgram, self).__init__(*args, **kwargs) |
| 124 | + |
| 125 | + def _initArgParsers(self): |
| 126 | + super(XMLTestProgram, self)._initArgParsers() |
| 127 | + |
| 128 | + for parser in (self._main_parser, self._discovery_parser): |
| 129 | + parser.add_argument('-o', '--output', metavar='DIR', |
| 130 | + help='Directory for storing XML reports ' |
| 131 | + "('.' default)") |
| 132 | + |
| 133 | + def runTests(self): |
| 134 | + if self.output is not None: |
| 135 | + kwargs = dict(verbosity=self.verbosity, |
| 136 | + failfast=self.failfast, |
| 137 | + buffer=self.buffer, |
| 138 | + warnings=self.warnings, |
| 139 | + output=self.output) |
| 140 | + |
| 141 | + if sys.version_info[:2] > (3, 4): |
| 142 | + kwargs.update(tb_locals=self.tb_locals) |
| 143 | + |
| 144 | + self.testRunner = self.testRunner(**kwargs) |
| 145 | + |
| 146 | + super(XMLTestProgram, self).runTests() |
0 commit comments