Skip to content

Commit 48a8305

Browse files
author
Michael Foord
committed
Tests for unittest.TestCase.maxDiff.
1 parent 64597ce commit 48a8305

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

Lib/unittest/test/test_case.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,8 @@ def testAssertSequenceEqualMaxDiff(self):
596596
seq2 = 'b' + 'x' * 80**2
597597
diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
598598
pprint.pformat(seq2).splitlines()))
599+
# the +1 is the leading \n added by assertSequenceEqual
600+
omitted = unittest.case.DIFF_OMITTED % (len(diff) + 1,)
599601

600602
self.maxDiff = len(diff)//2
601603
try:
@@ -605,6 +607,7 @@ def testAssertSequenceEqualMaxDiff(self):
605607
else:
606608
self.fail('assertSequenceEqual did not fail.')
607609
self.assertTrue(len(msg) < len(diff))
610+
self.assertIn(omitted, msg)
608611

609612
self.maxDiff = len(diff) * 2
610613
try:
@@ -614,6 +617,7 @@ def testAssertSequenceEqualMaxDiff(self):
614617
else:
615618
self.fail('assertSequenceEqual did not fail.')
616619
self.assertTrue(len(msg) > len(diff))
620+
self.assertNotIn(omitted, msg)
617621

618622
self.maxDiff = None
619623
try:
@@ -623,6 +627,41 @@ def testAssertSequenceEqualMaxDiff(self):
623627
else:
624628
self.fail('assertSequenceEqual did not fail.')
625629
self.assertTrue(len(msg) > len(diff))
630+
self.assertNotIn(omitted, msg)
631+
632+
def testTruncateMessage(self):
633+
self.maxDiff = 1
634+
message = self._truncateMessage('foo', 'bar')
635+
omitted = unittest.case.DIFF_OMITTED % len('bar')
636+
self.assertEqual(message, 'foo' + omitted)
637+
638+
self.maxDiff = None
639+
message = self._truncateMessage('foo', 'bar')
640+
self.assertEqual(message, 'foobar')
641+
642+
def testAssertDictEqualTruncates(self):
643+
test = unittest.TestCase('assertEqual')
644+
def truncate(msg, diff):
645+
return 'foo'
646+
test._truncateMessage = truncate
647+
try:
648+
test.assertDictEqual({}, {1: 0})
649+
except self.failureException as e:
650+
self.assertEqual(str(e), 'foo')
651+
else:
652+
self.fail('assertDictEqual did not fail')
653+
654+
def testAssertMultiLineEqualTruncates(self):
655+
test = unittest.TestCase('assertEqual')
656+
def truncate(msg, diff):
657+
return 'foo'
658+
test._truncateMessage = truncate
659+
try:
660+
test.assertMultiLineEqual('foo', 'bar')
661+
except self.failureException as e:
662+
self.assertEqual(str(e), 'foo')
663+
else:
664+
self.fail('assertMultiLineEqual did not fail')
626665

627666
def testAssertItemsEqual(self):
628667
a = object()

0 commit comments

Comments
 (0)