diff options
| author | Jonathan Lange <jml@mumak.net> | 2012-03-12 11:43:39 +0000 |
|---|---|---|
| committer | Jonathan Lange <jml@mumak.net> | 2012-03-12 11:43:39 +0000 |
| commit | ff7f663d86910dc08b1cc284d155aa229563a806 (patch) | |
| tree | 248b9a5b34c01da32393b3ddf028ac9fe7bdea6a /python | |
| parent | 5a596298fcfe15a2299bb49b7927c5ea037df885 (diff) | |
| parent | 7b94c24469146ec7844cd678806403db3c3ebfeb (diff) | |
| download | subunit-ff7f663d86910dc08b1cc284d155aa229563a806.tar.gz | |
Use public testtools API for getting exception strings.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/__init__.py | 8 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 22 |
2 files changed, 16 insertions, 14 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py index a82726e..8f2a9ed 100644 --- a/python/subunit/__init__.py +++ b/python/subunit/__init__.py @@ -123,6 +123,7 @@ import sys import unittest from testtools import content, content_type, ExtendedToOriginalDecorator +from testtools.content import TracebackContent from testtools.compat import _b, _u, BytesIO, StringIO try: from testtools.testresult.real import _StringException @@ -682,10 +683,9 @@ class TestProtocolClient(testresult.TestResult): raise ValueError if error is not None: self._stream.write(self._start_simple) - # XXX: this needs to be made much stricter, along the lines of - # Martin[gz]'s work in testtools. Perhaps subunit can use that? - for line in self._exc_info_to_unicode(error, test).splitlines(): - self._stream.write(("%s\n" % line).encode('utf8')) + tb_content = TracebackContent(error, test) + for bytes in tb_content.iter_bytes(): + self._stream.write(bytes) elif details is not None: self._write_details(details) else: diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index 091b370..ec6830d 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -18,9 +18,9 @@ import datetime import unittest import os -from testtools import skipIf, TestCase -from testtools.compat import _b, _u, BytesIO, StringIO -from testtools.content import Content, TracebackContent +from testtools import skipIf, TestCase, TestResult +from testtools.compat import _b, _u, BytesIO +from testtools.content import Content, TracebackContent, text_content from testtools.content_type import ContentType try: from testtools.testresult.doubles import ( @@ -40,6 +40,10 @@ from subunit import _remote_exception_str, _remote_exception_str_chunked import subunit.iso8601 as iso8601 +def details_to_str(details): + return TestResult()._err_details_to_string(None, details=details) + + class TestTestImports(unittest.TestCase): def test_imports(self): @@ -87,11 +91,12 @@ class TestTestProtocolServerPipe(unittest.TestCase): def test_story(self): client = unittest.TestResult() protocol = subunit.TestProtocolServer(client) + traceback = "foo.c:53:ERROR invalid state\n" pipe = BytesIO(_b("test old mcdonald\n" "success old mcdonald\n" "test bing crosby\n" "failure bing crosby [\n" - "foo.c:53:ERROR invalid state\n" + + traceback + "]\n" "test an error\n" "error an error\n")) @@ -102,9 +107,8 @@ class TestTestProtocolServerPipe(unittest.TestCase): [(an_error, _remote_exception_str + '\n')]) self.assertEqual( client.failures, - [(bing, _remote_exception_str + - ": foo.c:53:ERROR invalid state\n" - "\n")]) + [(bing, _remote_exception_str + ": " + + details_to_str({'traceback': text_content(traceback)}) + "\n")]) self.assertEqual(client.testsRun, 3) def test_non_test_characters_forwarded_immediately(self): @@ -559,9 +563,7 @@ class TestTestProtocolServerAddxFail(unittest.TestCase): value = details else: if error_message is not None: - if not len(error_message.strip()): - error_message = _u("Empty attachments:\n traceback\n") - value = subunit.RemoteError(_u(error_message)) + value = subunit.RemoteError(details_to_str(details)) else: value = subunit.RemoteError() self.assertEqual([ |
