mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Issue #18996: TestCase.assertEqual() now more cleverly shorten differing
strings in error report.
This commit is contained in:
parent
463bd4b5c6
commit
77622f55c2
4 changed files with 81 additions and 16 deletions
|
@ -12,7 +12,7 @@ import contextlib
|
|||
|
||||
from . import result
|
||||
from .util import (strclass, safe_repr, _count_diff_all_purpose,
|
||||
_count_diff_hashable)
|
||||
_count_diff_hashable, _common_shorten_repr)
|
||||
|
||||
__unittest = True
|
||||
|
||||
|
@ -770,7 +770,7 @@ class TestCase(object):
|
|||
def _baseAssertEqual(self, first, second, msg=None):
|
||||
"""The default assertEqual implementation, not type specific."""
|
||||
if not first == second:
|
||||
standardMsg = '%s != %s' % (safe_repr(first), safe_repr(second))
|
||||
standardMsg = '%s != %s' % _common_shorten_repr(first, second)
|
||||
msg = self._formatMessage(msg, standardMsg)
|
||||
raise self.failureException(msg)
|
||||
|
||||
|
@ -905,14 +905,9 @@ class TestCase(object):
|
|||
if seq1 == seq2:
|
||||
return
|
||||
|
||||
seq1_repr = safe_repr(seq1)
|
||||
seq2_repr = safe_repr(seq2)
|
||||
if len(seq1_repr) > 30:
|
||||
seq1_repr = seq1_repr[:30] + '...'
|
||||
if len(seq2_repr) > 30:
|
||||
seq2_repr = seq2_repr[:30] + '...'
|
||||
elements = (seq_type_name.capitalize(), seq1_repr, seq2_repr)
|
||||
differing = '%ss differ: %s != %s\n' % elements
|
||||
differing = '%ss differ: %s != %s\n' % (
|
||||
(seq_type_name.capitalize(),) +
|
||||
_common_shorten_repr(seq1, seq2))
|
||||
|
||||
for i in range(min(len1, len2)):
|
||||
try:
|
||||
|
@ -1070,7 +1065,7 @@ class TestCase(object):
|
|||
self.assertIsInstance(d2, dict, 'Second argument is not a dictionary')
|
||||
|
||||
if d1 != d2:
|
||||
standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True))
|
||||
standardMsg = '%s != %s' % _common_shorten_repr(d1, d2)
|
||||
diff = ('\n' + '\n'.join(difflib.ndiff(
|
||||
pprint.pformat(d1).splitlines(),
|
||||
pprint.pformat(d2).splitlines())))
|
||||
|
@ -1154,8 +1149,7 @@ class TestCase(object):
|
|||
if len(firstlines) == 1 and first.strip('\r\n') == first:
|
||||
firstlines = [first + '\n']
|
||||
secondlines = [second + '\n']
|
||||
standardMsg = '%s != %s' % (safe_repr(first, True),
|
||||
safe_repr(second, True))
|
||||
standardMsg = '%s != %s' % _common_shorten_repr(first, second)
|
||||
diff = '\n' + ''.join(difflib.ndiff(firstlines, secondlines))
|
||||
standardMsg = self._truncateMessage(standardMsg, diff)
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue