summaryrefslogtreecommitdiff
path: root/selftest/subunithelper.py
diff options
context:
space:
mode:
Diffstat (limited to 'selftest/subunithelper.py')
-rw-r--r--selftest/subunithelper.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/selftest/subunithelper.py b/selftest/subunithelper.py
index 057e1390508..6f1fdcee127 100644
--- a/selftest/subunithelper.py
+++ b/selftest/subunithelper.py
@@ -24,7 +24,7 @@ import subunit.iso8601
import testtools
from testtools import content, content_type
-VALID_RESULTS = ['success', 'successful', 'failure', 'fail', 'skip', 'knownfail', 'error', 'xfail', 'skip-testsuite', 'testsuite-failure', 'testsuite-xfail', 'testsuite-success', 'testsuite-error', 'uxsuccess']
+VALID_RESULTS = ['success', 'successful', 'failure', 'fail', 'skip', 'knownfail', 'error', 'xfail', 'skip-testsuite', 'testsuite-failure', 'testsuite-xfail', 'testsuite-success', 'testsuite-error', 'uxsuccess', 'testsuite-uxsuccess']
class TestsuiteEnabledTestResult(testtools.testresult.TestResult):
@@ -158,6 +158,9 @@ def parse_results(msg_ops, statistics, fh):
exitcode = 1
elif result == "testsuite-xfail":
msg_ops.end_testsuite(testname, "xfail", reason)
+ elif result == "testsuite-uxsuccess":
+ msg_ops.end_testsuite(testname, "uxsuccess", reason)
+ exitcode = 1
elif result == "testsuite-error":
msg_ops.end_testsuite(testname, "error", reason)
exitcode = 1
@@ -301,8 +304,14 @@ class FilterOps(testtools.testresult.TestResult):
def addUnexpectedSuccess(self, test, details=None):
test = self._add_prefix(test)
+ self.uxsuccess_added+=1
+ self.total_uxsuccess+=1
self._ops.addUnexpectedSuccess(test, details)
+ if self.output:
+ self._ops.output_msg(self.output)
self.output = None
+ if self.fail_immediately:
+ raise ImmediateFail()
def addFailure(self, test, details=None):
test = self._add_prefix(test)
@@ -362,12 +371,18 @@ class FilterOps(testtools.testresult.TestResult):
if self.xfail_added > 0:
xfail = True
- if self.fail_added > 0 or self.error_added > 0:
+ if self.fail_added > 0 or self.error_added > 0 or self.uxsuccess_added > 0:
xfail = False
if xfail and result in ("fail", "failure"):
result = "xfail"
+ if self.uxsuccess_added > 0 and result != "uxsuccess":
+ result = "uxsuccess"
+ if reason is None:
+ reason = "Subunit/Filter Reason"
+ reason += "\n uxsuccess[%d]" % self.uxsuccess_added
+
if self.fail_added > 0 and result != "failure":
result = "failure"
if reason is None:
@@ -381,6 +396,12 @@ class FilterOps(testtools.testresult.TestResult):
reason += "\n errors[%d]" % self.error_added
self._ops.end_testsuite(name, result, reason)
+ if result not in ("success", "xfail"):
+ if self.output:
+ self._ops.output_msg(self.output)
+ if self.fail_immediately:
+ raise ImmediateFail()
+ self.output = None
def __init__(self, out, prefix=None, suffix=None, expected_failures=None,
strip_ok_output=False, fail_immediately=False,