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):
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
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)
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:
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,
if not self.verbose:
self.test_output[name] = ""
- out = "[%d" % self.index
+ total_tests = (self.statistics['TESTS_EXPECTED_OK'] +
+ self.statistics['TESTS_EXPECTED_FAIL'] +
+ self.statistics['TESTS_ERROR'] +
+ self.statistics['TESTS_UNEXPECTED_FAIL'] +
+ self.statistics['TESTS_UNEXPECTED_OK'])
+
+ out = "[%d(%d)" % (self.index, total_tests)
if self.totalsuites is not None:
out += "/%d" % self.totalsuites
if self.start_time is not None:
- out += " in " + self._format_time(self.last_time - self.start_time)
+ out += " at " + self._format_time(self.last_time - self.start_time)
if self.suitesfailed:
out += ", %d errors" % (len(self.suitesfailed),)
out += "] %s" % name