diff options
| author | Jelmer Vernooij <jelmer@samba.org> | 2011-04-11 15:32:47 +0200 |
|---|---|---|
| committer | Jelmer Vernooij <jelmer@samba.org> | 2011-04-11 15:32:47 +0200 |
| commit | 67a43dcef5f1511398ef32052d1220a0ef35ffcf (patch) | |
| tree | b7b64e2d6ec27a9d75997bd7cc56d3c654c4554a /python | |
| parent | 931ee641258b77bd440d76a0d5c1f3305010f7c4 (diff) | |
| download | subunit-git-67a43dcef5f1511398ef32052d1220a0ef35ffcf.tar.gz | |
Support --fixup-expected-failures argument to subunit-filter.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/test_results.py | 16 | ||||
| -rw-r--r-- | python/subunit/tests/test_subunit_filter.py | 12 |
2 files changed, 25 insertions, 3 deletions
diff --git a/python/subunit/test_results.py b/python/subunit/test_results.py index e7f9171..b3308ea 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,6 +332,10 @@ 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)): @@ -340,8 +346,12 @@ class TestResultFilter(TestResultDecorator): 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 test.id() in self._fixup_expected_failures: + self._buffered_calls.append( + ('addExpectedFailure', [test, err], {'details': details})) + else: + self._buffered_calls.append( + ('addFailure', [test, err], {'details': details})) else: self._filtered() diff --git a/python/subunit/tests/test_subunit_filter.py b/python/subunit/tests/test_subunit_filter.py index cf6c2b6..855aa1e 100644 --- a/python/subunit/tests/test_subunit_filter.py +++ b/python/subunit/tests/test_subunit_filter.py @@ -88,6 +88,18 @@ xfail todo filtered_result.failures]) self.assertEqual(3, filtered_result.testsRun) + def test_fixup_expected_failures(self): + filtered_result = unittest.TestResult() + result_filter = TestResultFilter(filtered_result, + fixup_expected_failures=set(["failed"])) + self.run_tests(result_filter) + self.assertEqual(['failed', 'todo'], + [error[0].id() for error in filtered_result.expectedFailures]) + self.assertEqual([], + [failure[0].id() for failure in + filtered_result.failures]) + self.assertEqual(4, filtered_result.testsRun) + def test_exclude_failure(self): filtered_result = unittest.TestResult() result_filter = TestResultFilter(filtered_result, filter_failure=True) |
