diff options
| author | Robert Collins <robertc@robertcollins.net> | 2009-02-28 20:27:25 +1100 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2009-02-28 20:27:25 +1100 |
| commit | 2d27527361848457a6da460b1790385ef61fee90 (patch) | |
| tree | db8e9def1e7f340ebe9ccc8411fdaebe9ee98b49 /python/subunit/tests | |
| parent | 14026b1a23447dda1ada9bb490cdfa118e06fb8d (diff) | |
| download | subunit-git-2d27527361848457a6da460b1790385ef61fee90.tar.gz | |
Update skip support in python to be in line with testtools.
Diffstat (limited to 'python/subunit/tests')
| -rw-r--r-- | python/subunit/tests/test_subunit_filter.py | 26 | ||||
| -rw-r--r-- | python/subunit/tests/test_subunit_stats.py | 10 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 29 |
3 files changed, 47 insertions, 18 deletions
diff --git a/python/subunit/tests/test_subunit_filter.py b/python/subunit/tests/test_subunit_filter.py index 73ec1ed..e9ff4d1 100644 --- a/python/subunit/tests/test_subunit_filter.py +++ b/python/subunit/tests/test_subunit_filter.py @@ -36,36 +36,47 @@ class TestTestResultFilter(unittest.TestCase): self.filtered_result = unittest.TestResult() self.filter = subunit.TestResultFilter(self.filtered_result) self.run_tests() - self.assertEqual(['error'], + # skips are seen as errors by default python TestResult. + self.assertEqual(['error', 'skipped'], [error[0].id() for error in self.filtered_result.errors]) self.assertEqual(['failed'], [failure[0].id() for failure in self.filtered_result.failures]) - self.assertEqual(2, self.filtered_result.testsRun) + self.assertEqual(3, self.filtered_result.testsRun) def test_exclude_errors(self): self.filtered_result = unittest.TestResult() self.filter = subunit.TestResultFilter(self.filtered_result, filter_error=True) self.run_tests() - self.assertEqual([], + # skips are seen as errors by default python TestResult. + self.assertEqual(['skipped'], [error[0].id() for error in self.filtered_result.errors]) self.assertEqual(['failed'], [failure[0].id() for failure in self.filtered_result.failures]) - self.assertEqual(1, self.filtered_result.testsRun) + self.assertEqual(2, self.filtered_result.testsRun) def test_exclude_failure(self): self.filtered_result = unittest.TestResult() self.filter = subunit.TestResultFilter(self.filtered_result, filter_failure=True) self.run_tests() - self.assertEqual(['error'], + self.assertEqual(['error', 'skipped'], [error[0].id() for error in self.filtered_result.errors]) self.assertEqual([], [failure[0].id() for failure in self.filtered_result.failures]) - self.assertEqual(1, self.filtered_result.testsRun) + self.assertEqual(2, self.filtered_result.testsRun) + + def test_exclude_skips(self): + self.filtered_result = subunit.TestResultStats(None) + self.filter = subunit.TestResultFilter(self.filtered_result, + filter_skip=True) + self.run_tests() + self.assertEqual(0, self.filtered_result.skipped_tests) + self.assertEqual(2, self.filtered_result.failed_tests) + self.assertEqual(2, self.filtered_result.testsRun) def test_include_success(self): """Success's can be included if requested.""" @@ -73,14 +84,13 @@ class TestTestResultFilter(unittest.TestCase): self.filter = subunit.TestResultFilter(self.filtered_result, filter_success=False) self.run_tests() - self.assertEqual(['error'], + self.assertEqual(['error', 'skipped'], [error[0].id() for error in self.filtered_result.errors]) self.assertEqual(['failed'], [failure[0].id() for failure in self.filtered_result.failures]) self.assertEqual(5, self.filtered_result.testsRun) - def run_tests(self): self.setUpTestStream() self.test = subunit.ProtocolTestCase(self.input_stream) diff --git a/python/subunit/tests/test_subunit_stats.py b/python/subunit/tests/test_subunit_stats.py index b789089..e2f30fc 100644 --- a/python/subunit/tests/test_subunit_stats.py +++ b/python/subunit/tests/test_subunit_stats.py @@ -62,15 +62,17 @@ xfail todo # Statistics are calculated usefully. self.setUpUsedStream() self.assertEqual(5, self.result.total_tests) - self.assertEqual(3, self.result.passed_tests) + self.assertEqual(2, self.result.passed_tests) self.assertEqual(2, self.result.failed_tests) + self.assertEqual(1, self.result.skipped_tests) self.assertEqual(set(["global", "local"]), self.result.tags) def test_stat_formatting(self): expected = (""" -Total tests: 5 -Passed tests: 3 -Failed tests: 2 +Total tests: 5 +Passed tests: 2 +Failed tests: 2 +Skipped tests: 1 Tags: global, local """)[1:] self.setUpUsedStream() diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index 73f0821..80f91e1 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -32,6 +32,7 @@ try: self.end_calls = [] self.error_calls = [] self.failure_calls = [] + self.skip_calls = [] self.start_calls = [] self.success_calls = [] super(MockTestProtocolServerClient, self).__init__() @@ -42,6 +43,9 @@ try: def addFailure(self, test, error): self.failure_calls.append((test, error)) + def addSkip(self, test, reason): + self.skip_calls.append((test, reason)) + def addSuccess(self, test): self.success_calls.append(test) @@ -589,8 +593,8 @@ class TestTestProtocolServerAddxFail(unittest.TestCase): class TestTestProtocolServerAddSkip(unittest.TestCase): """Tests for the skip keyword. - In Python this thunks through to Success due to stdlib limitations. (See - README). + In python this meets the testtools extended TestResult contract. + (See https://launchpad.net/testtools). """ def setUp(self): @@ -606,7 +610,9 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): self.assertEqual(self.client.end_calls, [self.test]) self.assertEqual(self.client.error_calls, []) self.assertEqual(self.client.failure_calls, []) - self.assertEqual(self.client.success_calls, [self.test]) + self.assertEqual(self.client.success_calls, []) + self.assertEqual(self.client.skip_calls, + [(self.test, 'No reason given')]) def test_simple_skip(self): self.simple_skip_keyword("skip") @@ -621,7 +627,9 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): self.assertEqual(self.client.end_calls, [self.test]) self.assertEqual(self.client.error_calls, []) self.assertEqual(self.client.failure_calls, []) - self.assertEqual(self.client.success_calls, [self.test]) + self.assertEqual(self.client.success_calls, []) + self.assertEqual(self.client.skip_calls, + [(self.test, "No reason given")]) def skip_quoted_bracket(self, keyword): # This tests it is accepted, but cannot test it is used today, because @@ -633,7 +641,9 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): self.assertEqual(self.client.end_calls, [self.test]) self.assertEqual(self.client.error_calls, []) self.assertEqual(self.client.failure_calls, []) - self.assertEqual(self.client.success_calls, [self.test]) + self.assertEqual(self.client.success_calls, []) + self.assertEqual(self.client.skip_calls, + [(self.test, "]\n")]) def test_skip_quoted_bracket(self): self.skip_quoted_bracket("skip") @@ -933,7 +943,6 @@ class TestTestProtocolClient(unittest.TestCase): self.protocol = subunit.TestProtocolClient(self.io) self.test = TestTestProtocolClient("test_start_test") - def test_start_test(self): """Test startTest on a TestProtocolClient.""" self.protocol.startTest(self.test) @@ -968,6 +977,14 @@ class TestTestProtocolClient(unittest.TestCase): "RemoteException: phwoar crikey\n" "]\n" % self.test.id()) + def test_add_skip(self): + """Test addSkip on a TestProtocolClient.""" + self.protocol.addSkip( + self.test, "Has it really?") + self.assertEqual( + self.io.getvalue(), + 'skip: %s [\nHas it really?\n]\n' % self.test.id()) + def test_suite(): loader = subunit.tests.TestUtil.TestLoader() |
