mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue 8351. Suppress large diffs in unittest.TestCase.assertSequenceEqual.
This commit is contained in:
parent
9ef5d33084
commit
0100702b9a
2 changed files with 29 additions and 3 deletions
|
@ -13,7 +13,7 @@ from .util import (
|
|||
)
|
||||
|
||||
__unittest = True
|
||||
|
||||
TRUNCATED_DIFF = '\n[diff truncated...]'
|
||||
|
||||
class SkipTest(Exception):
|
||||
"""
|
||||
|
@ -589,7 +589,8 @@ class TestCase(object):
|
|||
failUnlessRaises = _deprecate(assertRaises)
|
||||
failIf = _deprecate(assertFalse)
|
||||
|
||||
def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None):
|
||||
def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None,
|
||||
max_diff=80*8):
|
||||
"""An equality assertion for ordered sequences (like lists and tuples).
|
||||
|
||||
For the purposes of this function, a valid ordered sequence type is one
|
||||
|
@ -602,6 +603,7 @@ class TestCase(object):
|
|||
datatype should be enforced.
|
||||
msg: Optional message to use on failure instead of a list of
|
||||
differences.
|
||||
max_diff: Maximum size off the diff, larger diffs are not shown
|
||||
"""
|
||||
if seq_type is not None:
|
||||
seq_type_name = seq_type.__name__
|
||||
|
@ -684,9 +686,14 @@ class TestCase(object):
|
|||
except (TypeError, IndexError, NotImplementedError):
|
||||
differing += ('Unable to index element %d '
|
||||
'of second %s\n' % (len1, seq_type_name))
|
||||
standardMsg = differing + '\n' + '\n'.join(
|
||||
standardMsg = differing
|
||||
diffMsg = '\n' + '\n'.join(
|
||||
difflib.ndiff(pprint.pformat(seq1).splitlines(),
|
||||
pprint.pformat(seq2).splitlines()))
|
||||
if max_diff is None or len(diffMsg) <= max_diff:
|
||||
standardMsg += diffMsg
|
||||
else:
|
||||
standardMsg += diffMsg[:max_diff] + TRUNCATED_DIFF
|
||||
msg = self._formatMessage(msg, standardMsg)
|
||||
self.fail(msg)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue