diff --git a/Lib/difflib.py b/Lib/difflib.py index 887c3c26ca..337a83d0ee 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -1187,7 +1187,11 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='', first, last = group[0], group[-1] file1_range = _format_range_unified(first[1], last[2]) file2_range = _format_range_unified(first[3], last[4]) - yield '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm) + if isinstance(a, list) or isinstance(a, tuple) and \ + isinstance(b, list) or isinstance(b, tuple): + yield '{}'.format(lineterm) + else: + yield '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm) for tag, i1, i2, j1, j2 in group: if tag == 'equal': diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 758924d801..1423d3616c 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -1018,9 +1018,11 @@ class TestCase(object): 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(), + fromfile='expected', tofile='got', + 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 f5e64d68e7..14a8f231e1 100644 --- a/Lib/unittest/test/test_assertions.py +++ b/Lib/unittest/test/test_assertions.py @@ -242,8 +242,8 @@ class TestLongMessage(unittest.TestCase): # 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 6d58201ea8..9f2197e5fa 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -789,8 +789,10 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): 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,)