summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/test
diff options
context:
space:
mode:
authorMichael Foord <fuzzyman@voidspace.org.uk>2010-06-05 11:23:51 (GMT)
committerMichael Foord <fuzzyman@voidspace.org.uk>2010-06-05 11:23:51 (GMT)
commit0100702b9a77000c03934208e9131ef5914dcf63 (patch)
tree072f02ba20bf1a7df0f2c57379c3e19916af554c /Lib/unittest/test
parent9ef5d33084f72ed209ec59a9ea4b0a1d968ee8d6 (diff)
downloadcpython-0100702b9a77000c03934208e9131ef5914dcf63.zip
cpython-0100702b9a77000c03934208e9131ef5914dcf63.tar.gz
cpython-0100702b9a77000c03934208e9131ef5914dcf63.tar.bz2
Issue 8351. Suppress large diffs in unittest.TestCase.assertSequenceEqual.
Diffstat (limited to 'Lib/unittest/test')
-rw-r--r--Lib/unittest/test/test_case.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py
index 25beab7..7dbc009 100644
--- a/Lib/unittest/test/test_case.py
+++ b/Lib/unittest/test/test_case.py
@@ -1,3 +1,5 @@
+import difflib
+import pprint
import re
import sys
@@ -588,6 +590,23 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
self.assertRaises(self.failureException, self.assertDictEqual, [], d)
self.assertRaises(self.failureException, self.assertDictEqual, 1, 1)
+ def testAssertSequenceEqualMaxDiff(self):
+ seq1 = 'a' + 'x' * 80**2
+ seq2 = 'b' + 'x' * 80**2
+ diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
+ pprint.pformat(seq2).splitlines()))
+ try:
+ self.assertSequenceEqual(seq1, seq2, max_diff=len(diff)/2)
+ except AssertionError as e:
+ msg = e.args[0]
+ self.assertTrue(len(msg) < len(diff))
+
+ try:
+ self.assertSequenceEqual(seq1, seq2, max_diff=len(diff)*2)
+ except AssertionError as e:
+ msg = e.args[0]
+ self.assertTrue(len(msg) > len(diff))
+
def testAssertItemsEqual(self):
a = object()
self.assertItemsEqual([1, 2, 3], [3, 2, 1])