diff options
| author | Robert Collins <robertc@robertcollins.net> | 2009-10-24 20:46:23 +1100 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2009-10-24 20:46:23 +1100 |
| commit | 30dae38d5c6a1f20bd4becf34f2cb5d57247c54a (patch) | |
| tree | 39d2cce3307864ae67a60b40651fadf3153db5b1 /python | |
| parent | 887d9b402b18a94c4cb36eab1dbfd9df342be31e (diff) | |
| download | subunit-git-30dae38d5c6a1f20bd4becf34f2cb5d57247c54a.tar.gz | |
Start reporting additional messages on successes via the details API.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/__init__.py | 7 | ||||
| -rw-r--r-- | python/subunit/details.py | 10 | ||||
| -rw-r--r-- | python/subunit/tests/test_details.py | 12 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 25 |
4 files changed, 37 insertions, 17 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py index ab7fbd9..b5c678c 100644 --- a/python/subunit/__init__.py +++ b/python/subunit/__init__.py @@ -300,7 +300,7 @@ class _InTest(_ParserState): self.parser._reading_skip_details) def _succeed(self): - self.parser.client.addSuccess(self.parser._current_test) + self.parser.client.addSuccess(self.parser._current_test, details={}) def addSuccess(self, offset, line): """A 'success:' directive has been read.""" @@ -396,7 +396,7 @@ class _ReadingSkipDetails(_ReadingDetails): def _report_outcome(self): self.parser.client.addSkip(self.parser._current_test, - details=self.details_parser.get_details(True)) + details=self.details_parser.get_details("skip")) def _outcome_label(self): return "skip" @@ -406,7 +406,8 @@ class _ReadingSuccessDetails(_ReadingDetails): """State for the subunit parser when reading success details.""" def _report_outcome(self): - self.parser.client.addSuccess(self.parser._current_test) + self.parser.client.addSuccess(self.parser._current_test, + details=self.details_parser.get_details("success")) def _outcome_label(self): return "success" diff --git a/python/subunit/details.py b/python/subunit/details.py index 43e723d..2cedba2 100644 --- a/python/subunit/details.py +++ b/python/subunit/details.py @@ -42,14 +42,18 @@ class SimpleDetailsParser(DetailsParser): else: self._message += line - def get_details(self, for_skip=False): + def get_details(self, style=None): result = {} - if not for_skip: + if not style: result['traceback'] = content.Content( content_type.ContentType("text", "x-traceback"), lambda:[self._message]) else: - result['reason'] = content.Content( + if style == 'skip': + name = 'reason' + else: + name = 'message' + result[name] = content.Content( content_type.ContentType("text", "plain"), lambda:[self._message]) return result diff --git a/python/subunit/tests/test_details.py b/python/subunit/tests/test_details.py index af87655..2700d4a 100644 --- a/python/subunit/tests/test_details.py +++ b/python/subunit/tests/test_details.py @@ -67,7 +67,17 @@ class TestSimpleDetails(unittest.TestCase): expected['reason'] = content.Content( content_type.ContentType("text", "plain"), lambda:[""]) - found = parser.get_details(True) + found = parser.get_details("skip") + self.assertEqual(expected, found) + + def test_get_details_success(self): + parser = details.SimpleDetailsParser(None) + traceback = "" + expected = {} + expected['message'] = content.Content( + content_type.ContentType("text", "plain"), + lambda:[""]) + found = parser.get_details("success") self.assertEqual(expected, found) diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index da57745..c109724 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -631,7 +631,7 @@ class TestTestProtocolServerAddSkip(unittest.TestCase): class TestTestProtocolServerAddSuccess(unittest.TestCase): def setUp(self): - self.client = Python26TestResult() + self.client = ExtendedTestResult() self.protocol = subunit.TestProtocolServer(self.client) self.protocol.lineReceived("test mcdonalds farm\n") self.test = subunit.RemotedTestCase("mcdonalds farm") @@ -656,26 +656,31 @@ class TestTestProtocolServerAddSuccess(unittest.TestCase): def test_simple_success_colon(self): self.simple_success_keyword("successful:") - def test_success_empty_message(self): - self.protocol.lineReceived("success mcdonalds farm [\n") - self.protocol.lineReceived("]\n") + def assertSuccess(self, details): self.assertEqual([ ('startTest', self.test), - ('addSuccess', self.test), + ('addSuccess', self.test, details), ('stopTest', self.test), ], self.client._calls) + def test_success_empty_message(self): + self.protocol.lineReceived("success mcdonalds farm [\n") + self.protocol.lineReceived("]\n") + details = {} + details['message'] = Content(ContentType("text", "plain"), + lambda:[""]) + self.assertSuccess(details) + def success_quoted_bracket(self, keyword): # This tests it is accepted, but cannot test it is used today, because # of not having a way to expose it in Python so far. self.protocol.lineReceived("%s mcdonalds farm [\n" % keyword) self.protocol.lineReceived(" ]\n") self.protocol.lineReceived("]\n") - self.assertEqual([ - ('startTest', self.test), - ('addSuccess', self.test), - ('stopTest', self.test), - ], self.client._calls) + details = {} + details['message'] = Content(ContentType("text", "plain"), + lambda:["]\n"]) + self.assertSuccess(details) def test_success_quoted_bracket(self): self.success_quoted_bracket("success") |
