]> granicus.if.org Git - python/commitdiff
Merged revisions 81763 via svnmerge from
authorMichael Foord <fuzzyman@voidspace.org.uk>
Sat, 5 Jun 2010 21:01:08 +0000 (21:01 +0000)
committerMichael Foord <fuzzyman@voidspace.org.uk>
Sat, 5 Jun 2010 21:01:08 +0000 (21:01 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81763 | michael.foord | 2010-06-05 21:33:43 +0100 (Sat, 05 Jun 2010) | 1 line

  Tests for unittest.TestCase.maxDiff.
........

Lib/unittest/test/test_case.py

index 8345443c07a5b155214e0ef4bc3411b7b54fe763..b7dfa68d3e5b1d4ffa4d8f53f8fd06a1d28a7f2a 100644 (file)
@@ -597,6 +597,8 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
         seq2 = 'b' + 'x' * 80**2
         diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
                                        pprint.pformat(seq2).splitlines()))
+        # the +1 is the leading \n added by assertSequenceEqual
+        omitted = unittest.case.DIFF_OMITTED % (len(diff) + 1,)
 
         self.maxDiff = len(diff)//2
         try:
@@ -607,6 +609,7 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
         else:
             self.fail('assertSequenceEqual did not fail.')
         self.assertTrue(len(msg) < len(diff))
+        self.assertIn(omitted, msg)
 
         self.maxDiff = len(diff) * 2
         try:
@@ -616,6 +619,7 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
         else:
             self.fail('assertSequenceEqual did not fail.')
         self.assertTrue(len(msg) > len(diff))
+        self.assertNotIn(omitted, msg)
 
         self.maxDiff = None
         try:
@@ -625,6 +629,41 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
         else:
             self.fail('assertSequenceEqual did not fail.')
         self.assertTrue(len(msg) > len(diff))
+        self.assertNotIn(omitted, msg)
+
+    def testTruncateMessage(self):
+        self.maxDiff = 1
+        message = self._truncateMessage('foo', 'bar')
+        omitted = unittest.case.DIFF_OMITTED % len('bar')
+        self.assertEqual(message, 'foo' + omitted)
+
+        self.maxDiff = None
+        message = self._truncateMessage('foo', 'bar')
+        self.assertEqual(message, 'foobar')
+
+    def testAssertDictEqualTruncates(self):
+        test = unittest.TestCase('assertEqual')
+        def truncate(msg, diff):
+            return 'foo'
+        test._truncateMessage = truncate
+        try:
+            test.assertDictEqual({}, {1: 0})
+        except self.failureException as e:
+            self.assertEqual(str(e), 'foo')
+        else:
+            self.fail('assertDictEqual did not fail')
+
+    def testAssertMultiLineEqualTruncates(self):
+        test = unittest.TestCase('assertEqual')
+        def truncate(msg, diff):
+            return 'foo'
+        test._truncateMessage = truncate
+        try:
+            test.assertMultiLineEqual('foo', 'bar')
+        except self.failureException as e:
+            self.assertEqual(str(e), 'foo')
+        else:
+            self.fail('assertMultiLineEqual did not fail')
 
     def testAssertItemsEqual(self):
         a = object()