summaryrefslogtreecommitdiff
path: root/python/subunit/tests
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-02-28 20:27:25 +1100
committerRobert Collins <robertc@robertcollins.net>2009-02-28 20:27:25 +1100
commit2d27527361848457a6da460b1790385ef61fee90 (patch)
treedb8e9def1e7f340ebe9ccc8411fdaebe9ee98b49 /python/subunit/tests
parent14026b1a23447dda1ada9bb490cdfa118e06fb8d (diff)
downloadsubunit-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.py26
-rw-r--r--python/subunit/tests/test_subunit_stats.py10
-rw-r--r--python/subunit/tests/test_test_protocol.py29
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()