diff options
| author | Jelmer Vernooij <jelmer@samba.org> | 2011-04-26 12:14:52 +0200 |
|---|---|---|
| committer | Jelmer Vernooij <jelmer@samba.org> | 2011-04-26 12:14:52 +0200 |
| commit | fac837618f84531205f6491fb9d72bde8717fbb8 (patch) | |
| tree | 367d4343dfef6f37ce37aba61477e0ff2e80e4c8 /python/subunit/test_results.py | |
| parent | 32b4cbe9c436a63ca330b30bbe41566d6335e637 (diff) | |
| parent | 7ce9deb0fe988b194c577b778b722f079a272d74 (diff) | |
| download | subunit-git-fac837618f84531205f6491fb9d72bde8717fbb8.tar.gz | |
Merge addition of --fixup-expected-failures argument to filter-subunit.
Diffstat (limited to 'python/subunit/test_results.py')
| -rw-r--r-- | python/subunit/test_results.py | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/python/subunit/test_results.py b/python/subunit/test_results.py index e7f9171..fe5b8d1 100644 --- a/python/subunit/test_results.py +++ b/python/subunit/test_results.py @@ -294,7 +294,7 @@ class TestResultFilter(TestResultDecorator): def __init__(self, result, filter_error=False, filter_failure=False, filter_success=True, filter_skip=False, - filter_predicate=None): + filter_predicate=None, fixup_expected_failures=None): """Create a FilterResult object filtering to result. :param filter_error: Filter out errors. @@ -306,6 +306,8 @@ class TestResultFilter(TestResultDecorator): through. err and details may be none if no error or extra metadata is available. outcome is the name of the outcome such as 'success' or 'failure'. + :param fixup_expected_failures: Set of test ids to consider known + failing. """ super(TestResultFilter, self).__init__(result) self.decorated = TimeCollapsingDecorator( @@ -330,18 +332,30 @@ class TestResultFilter(TestResultDecorator): self._current_test_filtered = None # Calls to this result that we don't know whether to forward on yet. self._buffered_calls = [] + if fixup_expected_failures is None: + self._fixup_expected_failures = frozenset() + else: + self._fixup_expected_failures = fixup_expected_failures def addError(self, test, err=None, details=None): if (self.filter_predicate(test, 'error', err, details)): - self._buffered_calls.append( - ('addError', [test, err], {'details': details})) + if self._failure_expected(test): + self._buffered_calls.append( + ('addExpectedFailure', [test, err], {'details': details})) + else: + self._buffered_calls.append( + ('addError', [test, err], {'details': details})) else: self._filtered() def addFailure(self, test, err=None, details=None): if (self.filter_predicate(test, 'failure', err, details)): - self._buffered_calls.append( - ('addFailure', [test, err], {'details': details})) + if self._failure_expected(test): + self._buffered_calls.append( + ('addExpectedFailure', [test, err], {'details': details})) + else: + self._buffered_calls.append( + ('addFailure', [test, err], {'details': details})) else: self._filtered() @@ -354,8 +368,12 @@ class TestResultFilter(TestResultDecorator): def addSuccess(self, test, details=None): if (self.filter_predicate(test, 'success', None, details)): - self._buffered_calls.append( - ('addSuccess', [test], {'details': details})) + if self._failure_expected(test): + self._buffered_calls.append( + ('addUnexpectedSuccess', [test], {'details': details})) + else: + self._buffered_calls.append( + ('addSuccess', [test], {'details': details})) else: self._filtered() @@ -373,6 +391,9 @@ class TestResultFilter(TestResultDecorator): def _filtered(self): self._current_test_filtered = True + def _failure_expected(self, test): + return (test.id() in self._fixup_expected_failures) + def startTest(self, test): """Start a test. |
