[Python-checkins] r82765 - in python/branches/release27-maint/Lib/unittest: case.py test/test_case.py

michael.foord python-checkins at python.org
Sat Jul 10 15:51:42 CEST 2010


Author: michael.foord
Date: Sat Jul 10 15:51:42 2010
New Revision: 82765

Log:
Fix error message for comparing single line strings in unittest.TestCase.assertEqual.
Issue 9174

Modified:
   python/branches/release27-maint/Lib/unittest/case.py
   python/branches/release27-maint/Lib/unittest/test/test_case.py

Modified: python/branches/release27-maint/Lib/unittest/case.py
==============================================================================
--- python/branches/release27-maint/Lib/unittest/case.py	(original)
+++ python/branches/release27-maint/Lib/unittest/case.py	Sat Jul 10 15:51:42 2010
@@ -895,9 +895,14 @@
                 '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))
 

Modified: python/branches/release27-maint/Lib/unittest/test/test_case.py
==============================================================================
--- python/branches/release27-maint/Lib/unittest/test/test_case.py	(original)
+++ python/branches/release27-maint/Lib/unittest/test/test_case.py	Sat Jul 10 15:51:42 2010
@@ -874,6 +874,21 @@
                 # 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)


More information about the Python-checkins mailing list