]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix error message for comparing single line strings in unittest.TestCase.assertEqual.
authorMichael Foord <fuzzyman@voidspace.org.uk>
Sat, 10 Jul 2010 13:51:42 +0000 (13:51 +0000)
committerMichael Foord <fuzzyman@voidspace.org.uk>
Sat, 10 Jul 2010 13:51:42 +0000 (13:51 +0000)
Issue 9174

Lib/unittest/case.py
Lib/unittest/test/test_case.py

index 85ff002e7176de9e6270f182f4e703147d540eba..28a68e8167ad2e81d4b64c6de7819c50732f69eb 100644 (file)
@@ -895,9 +895,14 @@ class TestCase(object):
                 'Second argument is not a string'))
 
         if first != second:
-            standardMsg = '%s != %s' % (safe_repr(first, True), safe_repr(second, True))
-            diff = '\n' + ''.join(difflib.ndiff(first.splitlines(True),
-                                                       second.splitlines(True)))
+            firstlines = first.splitlines(True)
+            secondlines = second.splitlines(True)
+            if len(firstlines) == 1 and first.strip('\r\n') == first:
+                firstlines = [first + '\n']
+                secondlines = [second + '\n']
+            standardMsg = '%s != %s' % (safe_repr(first, True),
+                                        safe_repr(second, True))
+            diff = '\n' + ''.join(difflib.ndiff(firstlines, secondlines))
             standardMsg = self._truncateMessage(standardMsg, diff)
             self.fail(self._formatMessage(msg, standardMsg))
 
index a395fe07d6755e2b77879368da00a979d5ed0a48..4e9dfc69010fade16d63a166c6d5d44dce7537c9 100644 (file)
@@ -874,6 +874,21 @@ test case
                 # unicode strings - so we can't use it for this check
                 self.assertTrue(sample_text_error == error)
 
+    def testAsertEqualSingleLine(self):
+        sample_text = u"laden swallows fly slowly"
+        revised_sample_text = u"unladen swallows fly quickly"
+        sample_text_error = """\
+- laden swallows fly slowly
+?                    ^^^^
++ unladen swallows fly quickly
+? ++                   ^^^^^
+"""
+        try:
+            self.assertEqual(sample_text, revised_sample_text)
+        except self.failureException as e:
+            error = str(e).split('\n', 1)[1]
+            self.assertTrue(sample_text_error == error)
+
     def testAssertIsNone(self):
         self.assertIsNone(None)
         self.assertRaises(self.failureException, self.assertIsNone, False)