diff options
author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-06-05 13:14:43 (GMT) |
---|---|---|
committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-06-05 13:14:43 (GMT) |
commit | cb11b251a09fe141b3ded25744b70caea51f6551 (patch) | |
tree | 464430d5658a90f4e1e4bd566ac8fdd927e7c9e7 | |
parent | 02ff2100d3935bbdb9ea0000b667982aecc9d6ee (diff) | |
download | cpython-cb11b251a09fe141b3ded25744b70caea51f6551.zip cpython-cb11b251a09fe141b3ded25744b70caea51f6551.tar.gz cpython-cb11b251a09fe141b3ded25744b70caea51f6551.tar.bz2 |
Merged revisions 81747 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r81747 | michael.foord | 2010-06-05 13:58:39 +0100 (Sat, 05 Jun 2010) | 1 line
unittest.TestCase.assertDictEqual and assertMultilineEqual provide better default failure messages in the event of long diffs.
........
-rw-r--r-- | Lib/unittest/case.py | 6 | ||||
-rw-r--r-- | Lib/unittest/util.py | 12 |
2 files changed, 12 insertions, 6 deletions
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index a8b2f4d..fca7e19 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -811,10 +811,11 @@ class TestCase(object): self.assert_(isinstance(d2, dict), 'Second argument is not a dictionary') if d1 != d2: + standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True)) diff = ('\n' + '\n'.join(difflib.ndiff( pprint.pformat(d1).splitlines(), pprint.pformat(d2).splitlines()))) - standardMsg = self._truncateMessage('', diff) + standardMsg = self._truncateMessage(standardMsg, diff) self.fail(self._formatMessage(msg, standardMsg)) def assertDictContainsSubset(self, expected, actual, msg=None): @@ -931,9 +932,10 @@ class TestCase(object): 'Second argument is not a string')) if first != second: + standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True)) diff = '\n' + ''.join(difflib.ndiff(first.splitlines(True), second.splitlines(True))) - standardMsg = self._truncateMessage('', diff) + standardMsg = self._truncateMessage(standardMsg, diff) self.fail(self._formatMessage(msg, standardMsg)) def assertLess(self, a, b, msg=None): diff --git a/Lib/unittest/util.py b/Lib/unittest/util.py index ea8a68d..c3f4a2d 100644 --- a/Lib/unittest/util.py +++ b/Lib/unittest/util.py @@ -2,12 +2,16 @@ __unittest = True - -def safe_repr(obj): +_MAX_LENGTH = 80 +def safe_repr(obj, short=False): try: - return repr(obj) + result = repr(obj) except Exception: - return object.__repr__(obj) + result = object.__repr__(obj) + if not short or len(result) < _MAX_LENGTH: + return result + return result[:_MAX_LENGTH] + ' [truncated]...' + def strclass(cls): return "%s.%s" % (cls.__module__, cls.__name__) |