summaryrefslogtreecommitdiff
path: root/python/subunit/test_results.py
diff options
context:
space:
mode:
authorJonathan Lange <jml@canonical.com>2011-02-11 17:43:01 +0000
committerJonathan Lange <jml@canonical.com>2011-02-11 17:43:01 +0000
commitdd089db28901fa5c05dc5ead9a6db1ca9ef5e80b (patch)
tree437bba23f020242b00acbf7b2dbb9ab9b0ca4892 /python/subunit/test_results.py
parent6d6297fef98e8e86cdea243922cc2e79d5c4641f (diff)
downloadsubunit-git-dd089db28901fa5c05dc5ead9a6db1ca9ef5e80b.tar.gz
Fix the immediate bug.
Diffstat (limited to 'python/subunit/test_results.py')
-rw-r--r--python/subunit/test_results.py35
1 files changed, 22 insertions, 13 deletions
diff --git a/python/subunit/test_results.py b/python/subunit/test_results.py
index 1c91daa..4079cea 100644
--- a/python/subunit/test_results.py
+++ b/python/subunit/test_results.py
@@ -237,49 +237,51 @@ class TestResultFilter(TestResultDecorator):
# The (new, gone) tags for the current test.
self._current_test_tags = None
+ # Calls to this result that we don't know whether to forward on yet.
+ self._buffered_calls = []
+
def addError(self, test, err=None, details=None):
if (not self._filter_error and
self.filter_predicate(test, 'error', err, details)):
- self.decorated.startTest(test)
- self.decorated.addError(test, err, details=details)
+ self._buffered_calls.append(
+ ('addError', [test, err], {'details': details}))
else:
self._filtered()
def addFailure(self, test, err=None, details=None):
if (not self._filter_failure and
self.filter_predicate(test, 'failure', err, details)):
- self.decorated.startTest(test)
- self.decorated.addFailure(test, err, details=details)
+ self._buffered_calls.append(
+ ('addFailure', [test, err], {'details': details}))
else:
self._filtered()
def addSkip(self, test, reason=None, details=None):
if (not self._filter_skip and
self.filter_predicate(test, 'skip', reason, details)):
- self.decorated.startTest(test)
- self.decorated.addSkip(test, reason, details=details)
+ self._buffered_calls.append(
+ ('addSkip', [reason], {'details': details}))
else:
self._filtered()
def addSuccess(self, test, details=None):
if (not self._filter_success and
self.filter_predicate(test, 'success', None, details)):
- self.decorated.startTest(test)
- self.decorated.addSuccess(test, details=details)
+ self._buffered_calls.append(
+ ('addSuccess', [test], {'details': details}))
else:
self._filtered()
def addExpectedFailure(self, test, err=None, details=None):
if self.filter_predicate(test, 'expectedfailure', err, details):
- self.decorated.startTest(test)
- return self.decorated.addExpectedFailure(test, err,
- details=details)
+ self._buffered_calls.append(
+ ('addExpectedFailure', [test, err], {'details': details}))
else:
self._filtered()
def addUnexpectedSuccess(self, test, details=None):
- self.decorated.startTest(test)
- return self.decorated.addUnexpectedSuccess(test, details=details)
+ self._buffered_calls.append(
+ ('addUnexpectedSuccess', [test], {'details': details}))
def _filtered(self):
self._current_test_filtered = True
@@ -293,6 +295,7 @@ class TestResultFilter(TestResultDecorator):
self._current_test = test
self._current_test_filtered = False
self._current_test_tags = set(), set()
+ self._buffered_calls.append(('startTest', [test], {}))
def stopTest(self, test):
"""Stop a test.
@@ -302,12 +305,15 @@ class TestResultFilter(TestResultDecorator):
"""
if not self._current_test_filtered:
# Tags to output for this test.
+ for method, args, kwargs in self._buffered_calls:
+ getattr(self.decorated, method)(*args, **kwargs)
if self._current_test_tags[0] or self._current_test_tags[1]:
self.decorated.tags(*self._current_test_tags)
self.decorated.stopTest(test)
self._current_test = None
self._current_test_filtered = None
self._current_test_tags = None
+ self._buffered_calls = []
def tags(self, new_tags, gone_tags):
"""Handle tag instructions.
@@ -326,6 +332,9 @@ class TestResultFilter(TestResultDecorator):
self._current_test_tags[1].difference_update(new_tags)
return self.decorated.tags(new_tags, gone_tags)
+ def time(self, a_time):
+ self._buffered_calls.append(('time', [a_time], {}))
+
def id_to_orig_id(self, id):
if id.startswith("subunit.RemotedTestCase."):
return id[len("subunit.RemotedTestCase."):]