The test suite was failing 6 tests due to testtools changing it's output
authorRobert Collins <robertc@robertcollins.net>
Sat, 23 Nov 2013 22:59:39 +0000 (11:59 +1300)
committerRobert Collins <robertc@robertcollins.net>
Sat, 23 Nov 2013 22:59:39 +0000 (11:59 +1300)
formatting of exceptions. (Robert Collins)

NEWS
python/subunit/__init__.py
python/subunit/tests/__init__.py
python/subunit/tests/test_test_protocol.py

diff --git a/NEWS b/NEWS
index 78c251e..380eb6c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ BUG FIXES
 * Python 3.1 and 3.2 have an inconsistent memoryview implementation which
   required a workaround for NUL byte detection. (Robert Collins, #1216246)
 
+* The test suite was failing 6 tests due to testtools changing it's output
+  formatting of exceptions. (Robert Collins)
+
 * V2 parser errors now set appropriate mime types for the encapsulated packet
   data and the error message. (Robert Collins)
 
index a259880..b385e9b 100644 (file)
@@ -133,13 +133,6 @@ from testtools.compat import _b, _u, BytesIO, StringIO
 try:
     from testtools.testresult.real import _StringException
     RemoteException = _StringException
-    # For testing: different pythons have different str() implementations.
-    if sys.version_info > (3, 0):
-        _remote_exception_str = "testtools.testresult.real._StringException"
-        _remote_exception_str_chunked = "34\r\n" + _remote_exception_str
-    else:
-        _remote_exception_str = "_StringException" 
-        _remote_exception_str_chunked = "1A\r\n" + _remote_exception_str
 except ImportError:
     raise ImportError ("testtools.testresult.real does not contain "
         "_StringException, check your version.")
index a3caa38..6a4a3b2 100644 (file)
 #  limitations under that license.
 #
 
+import sys
 from unittest import TestLoader
 
+
+# Before the test module imports to avoid circularity.
+# For testing: different pythons have different str() implementations.
+if sys.version_info > (3, 0):
+    _remote_exception_repr = "testtools.testresult.real._StringException"
+    _remote_exception_str = "Traceback (most recent call last):\ntesttools.testresult.real._StringException"
+    _remote_exception_str_chunked = "57\r\n" + _remote_exception_str + ": boo qux\n0\r\n"
+else:
+    _remote_exception_repr = "_StringException" 
+    _remote_exception_str = "Traceback (most recent call last):\n_StringException" 
+    _remote_exception_str_chunked = "3D\r\n" + _remote_exception_str + ": boo qux\n0\r\n"
+
+
 from subunit.tests import (
     test_chunked,
     test_details,
@@ -31,6 +45,7 @@ from subunit.tests import (
     test_test_results,
     )
 
+
 def test_suite():
     loader = TestLoader()
     result = loader.loadTestsFromModule(test_chunked)
index 4fa66ab..c6008f4 100644 (file)
@@ -37,7 +37,11 @@ except ImportError:
 from testtools.matchers import Contains
 
 import subunit
-from subunit import _remote_exception_str, _remote_exception_str_chunked
+from subunit.tests import (
+    _remote_exception_repr,
+    _remote_exception_str,
+    _remote_exception_str_chunked,
+    )
 import subunit.iso8601 as iso8601
 
 
@@ -105,10 +109,10 @@ class TestTestProtocolServerPipe(unittest.TestCase):
         bing = subunit.RemotedTestCase("bing crosby")
         an_error = subunit.RemotedTestCase("an error")
         self.assertEqual(client.errors,
-                         [(an_error, _remote_exception_str + '\n')])
+                         [(an_error, _remote_exception_repr + '\n')])
         self.assertEqual(
             client.failures,
-            [(bing, _remote_exception_str + ": "
+            [(bing, _remote_exception_repr + ": "
               + details_to_str({'traceback': text_content(traceback)}) + "\n")])
         self.assertEqual(client.testsRun, 3)
 
@@ -963,7 +967,7 @@ class TestRemotedTestCase(unittest.TestCase):
                          "'A test description'>", "%r" % test)
         result = unittest.TestResult()
         test.run(result)
-        self.assertEqual([(test, _remote_exception_str + ": "
+        self.assertEqual([(test, _remote_exception_repr + ": "
                                  "Cannot run RemotedTestCases.\n\n")],
                          result.errors)
         self.assertEqual(1, result.testsRun)
@@ -1199,15 +1203,15 @@ class TestTestProtocolClient(TestCase):
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;charset=utf8,language=python\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
+            "traceback\n" + _remote_exception_str_chunked +
             "]\n") % self.test.id()),
             _b(("failure: %s [ multipart\n"
             "Content-Type: text/plain\n"
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;language=python,charset=utf8\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
-            "]\n") % self.test.id())
+            "traceback\n" + _remote_exception_str_chunked +
+            "]\n") % self.test.id()),
             ],
             Contains(self.io.getvalue())),
 
@@ -1231,14 +1235,14 @@ class TestTestProtocolClient(TestCase):
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;charset=utf8,language=python\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
+            "traceback\n" + _remote_exception_str_chunked +
             "]\n") % self.test.id()),
             _b(("error: %s [ multipart\n"
             "Content-Type: text/plain\n"
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;language=python,charset=utf8\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
+            "traceback\n" + _remote_exception_str_chunked +
             "]\n") % self.test.id()),
             ],
             Contains(self.io.getvalue())),
@@ -1263,14 +1267,14 @@ class TestTestProtocolClient(TestCase):
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;charset=utf8,language=python\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
+            "traceback\n" + _remote_exception_str_chunked +
             "]\n") % self.test.id()),
             _b(("xfail: %s [ multipart\n"
             "Content-Type: text/plain\n"
             "something\n"
             "F\r\nserialised\nform0\r\n"
             "Content-Type: text/x-traceback;language=python,charset=utf8\n"
-            "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n"
+            "traceback\n" + _remote_exception_str_chunked +
             "]\n") % self.test.id()),
             ],
             Contains(self.io.getvalue())),