diff options
| author | Robert Collins <robertc@robertcollins.net> | 2009-10-24 19:24:09 +1100 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2009-10-24 19:24:09 +1100 |
| commit | ab0aada6011a4d0db688de56cffef931d5585629 (patch) | |
| tree | 44a15a4b47f92a139bc9b9ea6bbced81149e7320 /python | |
| parent | 1397750c1112952370adbd70f5e19745de8691be (diff) | |
| download | subunit-git-ab0aada6011a4d0db688de56cffef931d5585629.tar.gz | |
change error reports to use the extended details interface.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/__init__.py | 5 | ||||
| -rw-r--r-- | python/subunit/content.py | 4 | ||||
| -rw-r--r-- | python/subunit/details.py | 6 | ||||
| -rw-r--r-- | python/subunit/tests/test_content.py | 12 | ||||
| -rw-r--r-- | python/subunit/tests/test_details.py | 14 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 18 |
6 files changed, 47 insertions, 12 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py index 4cb273b..a981a82 100644 --- a/python/subunit/__init__.py +++ b/python/subunit/__init__.py @@ -266,7 +266,8 @@ class _InTest(_ParserState): self.parser.stdOutLineReceived(line) def _error(self): - self.parser.client.addError(self.parser._current_test, RemoteError("")) + self.parser.client.addError(self.parser._current_test, + details={}) def addError(self, offset, line): """An 'error:' directive has been read.""" @@ -373,7 +374,7 @@ class _ReadingErrorDetails(_ReadingDetails): def _report_outcome(self): self.parser.client.addError(self.parser._current_test, - RemoteError(self.details_parser.get_message())) + details=self.details_parser.get_details()) def _outcome_label(self): return "error" diff --git a/python/subunit/content.py b/python/subunit/content.py index 160a58a..d7d3893 100644 --- a/python/subunit/content.py +++ b/python/subunit/content.py @@ -42,6 +42,10 @@ class Content(object): self.content_type = content_type self._get_bytes = get_bytes + def __eq__(self, other): + return (self.content_type == other.content_type and + ''.join(self.iter_bytes()) == ''.join(other.iter_bytes())) + def iter_bytes(self): """Iterate over bytestrings of the serialised content.""" return self._get_bytes() diff --git a/python/subunit/details.py b/python/subunit/details.py index 1460170..c54a220 100644 --- a/python/subunit/details.py +++ b/python/subunit/details.py @@ -43,7 +43,11 @@ class SimpleDetailsParser(DetailsParser): self._message += line def get_details(self): - return None + result = {} + result['traceback'] = content.Content( + content_type.ContentType("text", "x-traceback"), + lambda:[self._message]) + return result def get_message(self): return self._message diff --git a/python/subunit/tests/test_content.py b/python/subunit/tests/test_content.py index 8075cf9..c13b254 100644 --- a/python/subunit/tests/test_content.py +++ b/python/subunit/tests/test_content.py @@ -40,6 +40,18 @@ class TestContent(unittest.TestCase): self.assertEqual(content_type, content.content_type) self.assertEqual(["bytes"], list(content.iter_bytes())) + def test___eq__(self): + content_type = ContentType("foo", "bar") + content1 = Content(content_type, lambda:["bytes"]) + content2 = Content(content_type, lambda:["bytes"]) + content3 = Content(content_type, lambda:["by", "tes"]) + content4 = Content(content_type, lambda:["by", "te"]) + content5 = Content(ContentType("f","b"), lambda:["by", "tes"]) + self.assertEqual(content1, content2) + self.assertEqual(content1, content3) + self.assertNotEqual(content1, content4) + self.assertNotEqual(content1, content5) + class TestTracebackContent(unittest.TestCase): diff --git a/python/subunit/tests/test_details.py b/python/subunit/tests/test_details.py index f76d505..5873ee7 100644 --- a/python/subunit/tests/test_details.py +++ b/python/subunit/tests/test_details.py @@ -46,9 +46,19 @@ class TestSimpleDetails(unittest.TestCase): parser = details.SimpleDetailsParser(None) self.assertEqual("", parser.get_message()) - def test_get_details_is_None(self): + def test_get_details(self): parser = details.SimpleDetailsParser(None) - self.assertEqual(None, parser.get_details()) + traceback = "" + expected = {} + expected['traceback'] = content.Content( + content_type.ContentType("text", "x-traceback"), + lambda:[""]) + found = parser.get_details() + self.assertEqual(expected.keys(), found.keys()) + self.assertEqual(expected['traceback'].content_type, + found['traceback'].content_type) + self.assertEqual(''.join(expected['traceback'].iter_bytes()), + ''.join(found['traceback'].iter_bytes())) class TestMultipartDetails(unittest.TestCase): diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index fea715c..39734b5 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -349,17 +349,17 @@ class TestInTestMultipart(unittest.TestCase): class TestTestProtocolServerAddError(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") def simple_error_keyword(self, keyword): self.protocol.lineReceived("%s mcdonalds farm\n" % keyword) - failure = subunit.RemoteError("") + details = {} self.assertEqual([ ('startTest', self.test), - ('addError', self.test, failure), + ('addError', self.test, details), ('stopTest', self.test), ], self.client._calls) @@ -372,10 +372,12 @@ class TestTestProtocolServerAddError(unittest.TestCase): def test_error_empty_message(self): self.protocol.lineReceived("error mcdonalds farm [\n") self.protocol.lineReceived("]\n") - failure = subunit.RemoteError("") + details = {} + details['traceback'] = Content(ContentType("text", "x-traceback"), + lambda:[""]) self.assertEqual([ ('startTest', self.test), - ('addError', self.test, failure), + ('addError', self.test, details), ('stopTest', self.test), ], self.client._calls) @@ -383,10 +385,12 @@ class TestTestProtocolServerAddError(unittest.TestCase): self.protocol.lineReceived("%s mcdonalds farm [\n" % keyword) self.protocol.lineReceived(" ]\n") self.protocol.lineReceived("]\n") - failure = subunit.RemoteError("]\n") + details = {} + details['traceback'] = Content(ContentType("text", "x-traceback"), + lambda:["]\n"]) self.assertEqual([ ('startTest', self.test), - ('addError', self.test, failure), + ('addError', self.test, details), ('stopTest', self.test), ], self.client._calls) |
