diff options
| author | Robert Collins <robertc@robertcollins.net> | 2009-10-24 20:40:51 +1100 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2009-10-24 20:40:51 +1100 |
| commit | 887d9b402b18a94c4cb36eab1dbfd9df342be31e (patch) | |
| tree | 060bab501460d0c29ae08e4d73852ee382a707f5 /python | |
| parent | b233594fc6031cc034e390387be187ae24c11e75 (diff) | |
| download | subunit-git-887d9b402b18a94c4cb36eab1dbfd9df342be31e.tar.gz | |
Move skips to the details API.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/__init__.py | 14 | ||||
| -rw-r--r-- | python/subunit/details.py | 15 | ||||
| -rw-r--r-- | python/subunit/tests/test_details.py | 10 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 27 |
4 files changed, 37 insertions, 29 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py index 570af8b..ab7fbd9 100644 --- a/python/subunit/__init__.py +++ b/python/subunit/__init__.py @@ -284,8 +284,7 @@ class _InTest(_ParserState): self.parser._reading_xfail_details) def _failure(self): - self.parser.client.addFailure(self.parser._current_test, - details={}) + self.parser.client.addFailure(self.parser._current_test, details={}) def addFailure(self, offset, line): """A 'failure:' directive has been read.""" @@ -293,7 +292,7 @@ class _InTest(_ParserState): self.parser._reading_failure_details) def _skip(self): - self.parser._skip_or_error() + self.parser.client.addSkip(self.parser._current_test, details={}) def addSkip(self, offset, line): """A 'skip:' directive has been read.""" @@ -396,7 +395,8 @@ class _ReadingSkipDetails(_ReadingDetails): """State for the subunit parser when reading skip details.""" def _report_outcome(self): - self.parser._skip_or_error(self.details_parser.get_message()) + self.parser.client.addSkip(self.parser._current_test, + details=self.details_parser.get_details(True)) def _outcome_label(self): return "skip" @@ -442,12 +442,6 @@ class TestProtocolServer(object): # start with outside test. self._state = self._outside_test - def _skip_or_error(self, message=None): - """Report the current test as a skip if possible, or else an error.""" - if not message: - message = "No reason given" - self.client.addSkip(self._current_test, message) - def _handleProgress(self, offset, line): """Process a progress directive.""" line = line[offset:].strip() diff --git a/python/subunit/details.py b/python/subunit/details.py index c54a220..43e723d 100644 --- a/python/subunit/details.py +++ b/python/subunit/details.py @@ -42,11 +42,16 @@ class SimpleDetailsParser(DetailsParser): else: self._message += line - def get_details(self): + def get_details(self, for_skip=False): result = {} - result['traceback'] = content.Content( - content_type.ContentType("text", "x-traceback"), - lambda:[self._message]) + if not for_skip: + result['traceback'] = content.Content( + content_type.ContentType("text", "x-traceback"), + lambda:[self._message]) + else: + result['reason'] = content.Content( + content_type.ContentType("text", "plain"), + lambda:[self._message]) return result def get_message(self): @@ -88,7 +93,7 @@ class MultipartDetailsParser(DetailsParser): self._chunk_parser.close() self._parse_state = self._look_for_content - def get_details(self): + def get_details(self, for_skip=False): return self._details def get_message(self): diff --git a/python/subunit/tests/test_details.py b/python/subunit/tests/test_details.py index 5873ee7..af87655 100644 --- a/python/subunit/tests/test_details.py +++ b/python/subunit/tests/test_details.py @@ -60,6 +60,16 @@ class TestSimpleDetails(unittest.TestCase): self.assertEqual(''.join(expected['traceback'].iter_bytes()), ''.join(found['traceback'].iter_bytes())) + def test_get_details_skip(self): + parser = details.SimpleDetailsParser(None) + traceback = "" + expected = {} + expected['reason'] = content.Content( + content_type.ContentType("text", "plain"), + lambda:[""]) + found = parser.get_details(True) + self.assertEqual(expected, found) + class TestMultipartDetails(unittest.TestCase): diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index 1a4e1fd..da57745 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -582,19 +582,26 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): def setUp(self): """Setup a test object ready to be skipped.""" - self.client = Python27TestResult() + self.client = ExtendedTestResult() self.protocol = subunit.TestProtocolServer(self.client) self.protocol.lineReceived("test mcdonalds farm\n") self.test = self.client._calls[-1][-1] - def simple_skip_keyword(self, keyword): - self.protocol.lineReceived("%s mcdonalds farm\n" % keyword) + def assertSkip(self, reason): + details = {} + if reason is not None: + details['reason'] = Content( + ContentType("text", "plain"), lambda:[reason]) self.assertEqual([ ('startTest', self.test), - ('addSkip', self.test, "No reason given"), + ('addSkip', self.test, details), ('stopTest', self.test), ], self.client._calls) + def simple_skip_keyword(self, keyword): + self.protocol.lineReceived("%s mcdonalds farm\n" % keyword) + self.assertSkip(None) + def test_simple_skip(self): self.simple_skip_keyword("skip") @@ -604,11 +611,7 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): def test_skip_empty_message(self): self.protocol.lineReceived("skip mcdonalds farm [\n") self.protocol.lineReceived("]\n") - self.assertEqual([ - ('startTest', self.test), - ('addSkip', self.test, "No reason given"), - ('stopTest', self.test), - ], self.client._calls) + self.assertSkip("") def skip_quoted_bracket(self, keyword): # This tests it is accepted, but cannot test it is used today, because @@ -616,11 +619,7 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): self.protocol.lineReceived("%s mcdonalds farm [\n" % keyword) self.protocol.lineReceived(" ]\n") self.protocol.lineReceived("]\n") - self.assertEqual([ - ('startTest', self.test), - ('addSkip', self.test, "]\n"), - ('stopTest', self.test), - ], self.client._calls) + self.assertSkip("]\n") def test_skip_quoted_bracket(self): self.skip_quoted_bracket("skip") |
