From 9fd12d8a8ad99d386dcd64fe7f4aca084345d39b Mon Sep 17 00:00:00 2001 From: Srinivas Reddy Thatiparthy Date: Mon, 22 Oct 2018 08:40:51 +0530 Subject: [PATCH] Fixed bpo-19217: Calling assertEquals for moderately long list takes too long --- Lib/unittest/case.py | 7 ++++--- Lib/unittest/test/test_assertions.py | 4 ++-- Lib/unittest/test/test_case.py | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 2579c30474b5366..f3c65931528f41e 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -1013,9 +1013,10 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None): differing += ('Unable to index element %d ' 'of second %s\n' % (len1, seq_type_name)) standardMsg = differing - diffMsg = '\n' + '\n'.join( - difflib.ndiff(pprint.pformat(seq1).splitlines(), - pprint.pformat(seq2).splitlines())) + diffMsg = difflib.unified_diff(pprint.pformat(seq1).splitlines(), + pprint.pformat(seq2).splitlines(), + lineterm='') + diffMsg = '\n' + '\n'.join(diffMsg) standardMsg = self._truncateMessage(standardMsg, diffMsg) msg = self._formatMessage(msg, standardMsg) diff --git a/Lib/unittest/test/test_assertions.py b/Lib/unittest/test/test_assertions.py index f5e64d68e7b1014..14a8f231e1c023b 100644 --- a/Lib/unittest/test/test_assertions.py +++ b/Lib/unittest/test/test_assertions.py @@ -242,8 +242,8 @@ def testAssertSequenceEqual(self): # Error messages are multiline so not testing on full message # assertTupleEqual and assertListEqual delegate to this method self.assertMessages('assertSequenceEqual', ([], [None]), - [r"\+ \[None\]$", "^oops$", r"\+ \[None\]$", - r"\+ \[None\] : oops$"]) + [r"\+\[None\]$", "^oops$", r"\+\[None\]$", + r"\+\[None\] : oops$"]) def testAssertSetEqual(self): self.assertMessages('assertSetEqual', (set(), set([None])), diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 687fe5b65f109e7..68fbdef7665b9c0 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -789,8 +789,10 @@ def testAssertSequenceEqualMaxDiff(self): self.assertEqual(self.maxDiff, 80*8) seq1 = 'a' + 'x' * 80**2 seq2 = 'b' + 'x' * 80**2 - diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(), - pprint.pformat(seq2).splitlines())) + diff = difflib.unified_diff(pprint.pformat(seq1).splitlines(), + pprint.pformat(seq2).splitlines(), + lineterm='') + diff = '\n'.join(diff) # the +1 is the leading \n added by assertSequenceEqual omitted = unittest.case.DIFF_OMITTED % (len(diff) + 1,)