1313)
1414
1515__unittest = True
16-
16+ TRUNCATED_DIFF = ' \n [diff truncated...]'
1717
1818class SkipTest (Exception ):
1919 """
@@ -589,7 +589,8 @@ def deprecated_func(*args, **kwargs):
589589 failUnlessRaises = _deprecate (assertRaises )
590590 failIf = _deprecate (assertFalse )
591591
592- def assertSequenceEqual (self , seq1 , seq2 , msg = None , seq_type = None ):
592+ def assertSequenceEqual (self , seq1 , seq2 , msg = None , seq_type = None ,
593+ max_diff = 80 * 8 ):
593594 """An equality assertion for ordered sequences (like lists and tuples).
594595
595596 For the purposes of this function, a valid ordered sequence type is one
@@ -602,6 +603,7 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None):
602603 datatype should be enforced.
603604 msg: Optional message to use on failure instead of a list of
604605 differences.
606+ max_diff: Maximum size off the diff, larger diffs are not shown
605607 """
606608 if seq_type is not None :
607609 seq_type_name = seq_type .__name__
@@ -684,9 +686,14 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None):
684686 except (TypeError , IndexError , NotImplementedError ):
685687 differing += ('Unable to index element %d '
686688 'of second %s\n ' % (len1 , seq_type_name ))
687- standardMsg = differing + '\n ' + '\n ' .join (
689+ standardMsg = differing
690+ diffMsg = '\n ' + '\n ' .join (
688691 difflib .ndiff (pprint .pformat (seq1 ).splitlines (),
689692 pprint .pformat (seq2 ).splitlines ()))
693+ if max_diff is None or len (diffMsg ) <= max_diff :
694+ standardMsg += diffMsg
695+ else :
696+ standardMsg += diffMsg [:max_diff ] + TRUNCATED_DIFF
690697 msg = self ._formatMessage (msg , standardMsg )
691698 self .fail (msg )
692699
0 commit comments