Commit 30482ee8 authored by Stefan Behnel's avatar Stefan Behnel

another xml test runner fix to make stdout/stderr output more accessible

parent 45685d47
...@@ -53,14 +53,14 @@ class _TestInfo(object): ...@@ -53,14 +53,14 @@ class _TestInfo(object):
# Possible test outcomes # Possible test outcomes
(SUCCESS, FAILURE, ERROR) = range(3) (SUCCESS, FAILURE, ERROR) = range(3)
def __init__(self, test_result, test_method, outcome=SUCCESS, err=None, stdout=None, stderr=None): def __init__(self, test_result, test_method, outcome=SUCCESS, err=None):
"Create a new instance of _TestInfo." "Create a new instance of _TestInfo."
self.test_result = test_result self.test_result = test_result
self.test_method = test_method self.test_method = test_method
self.outcome = outcome self.outcome = outcome
self.err = err self.err = err
self.stdout = stdout self.stdout = test_result.stdout and test_result.stdout.getvalue().strip() or ''
self.stderr = stderr self.stderr = test_result.stdout and test_result.stderr.getvalue().strip() or ''
def get_elapsed_time(self): def get_elapsed_time(self):
"""Return the time that shows how long the test method took to """Return the time that shows how long the test method took to
...@@ -154,19 +154,17 @@ class _XMLTestResult(_TextTestResult): ...@@ -154,19 +154,17 @@ class _XMLTestResult(_TextTestResult):
def addSuccess(self, test): def addSuccess(self, test):
"Called when a test executes successfully." "Called when a test executes successfully."
self._prepare_callback(_TestInfo(self, test, stdout=self.stdout, stderr=self.stderr), self._prepare_callback(_TestInfo(self, test),
self.successes, 'OK', '.') self.successes, 'OK', '.')
def addFailure(self, test, err): def addFailure(self, test, err):
"Called when a test method fails." "Called when a test method fails."
self._prepare_callback(_TestInfo(self, test, _TestInfo.FAILURE, err, self._prepare_callback(_TestInfo(self, test, _TestInfo.FAILURE, err),
stdout=self.stdout, stderr=self.stderr),
self.failures, 'FAIL', 'F') self.failures, 'FAIL', 'F')
def addError(self, test, err): def addError(self, test, err):
"Called when a test method raises an error." "Called when a test method raises an error."
self._prepare_callback(_TestInfo(self, test, _TestInfo.ERROR, err, self._prepare_callback(_TestInfo(self, test, _TestInfo.ERROR, err),
stdout=self.stdout, stderr=self.stderr),
self.errors, 'ERROR', 'E') self.errors, 'ERROR', 'E')
def printErrorList(self, flavour, errors): def printErrorList(self, flavour, errors):
...@@ -281,10 +279,12 @@ class _XMLTestResult(_TextTestResult): ...@@ -281,10 +279,12 @@ class _XMLTestResult(_TextTestResult):
stdout, stderr = [], [] stdout, stderr = [], []
for test in tests: for test in tests:
_XMLTestResult._report_testcase(suite, test, testsuite, doc) _XMLTestResult._report_testcase(suite, test, testsuite, doc)
stdout.append(test.stdout and test.stdout.getvalue() or '') if test.stdout:
stderr.append(test.stderr and test.stderr.getvalue() or '') stdout.extend(['*****************', test.get_description(), test.stdout])
if test.stderr:
stderr.extend(['*****************', test.get_description(), test.stderr])
_XMLTestResult._report_output(test_runner, testsuite, doc, _XMLTestResult._report_output(test_runner, testsuite, doc,
'\n'.join(stdout).strip(), '\n'.join(stderr).strip()) '\n'.join(stdout), '\n'.join(stderr))
xml_content = doc.toprettyxml(indent='\t') xml_content = doc.toprettyxml(indent='\t')
if type(test_runner.output) is str: if type(test_runner.output) is str:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment