mirror of https://github.com/python/cpython.git
Fix error message for comparing single line strings in unittest.TestCase.assertEqual.
Issue 9174.
This commit is contained in:
parent
0425a8ea72
commit
c653ce313f
|
@ -940,9 +940,14 @@ def assertMultiLineEqual(self, first, second, msg=None):
|
|||
'Second argument is not a string'))
|
||||
|
||||
if first != second:
|
||||
standardMsg = '%s != %s' % (safe_repr(first, True), safe_repr(second, True))
|
||||
diff = '\n' + ''.join(difflib.ndiff(first.splitlines(True),
|
||||
second.splitlines(True)))
|
||||
firstlines = first.splitlines(True)
|
||||
secondlines = second.splitlines(True)
|
||||
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))
|
||||
diff = '\n' + ''.join(difflib.ndiff(firstlines, secondlines))
|
||||
standardMsg = self._truncateMessage(standardMsg, diff)
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
|
|
|
@ -841,6 +841,21 @@ def testAssertMultiLineEqual(self):
|
|||
# so can't use assertEqual either. Just use assertTrue.
|
||||
self.assertTrue(sample_text_error == error)
|
||||
|
||||
def testAsertEqualSingleLine(self):
|
||||
sample_text = "laden swallows fly slowly"
|
||||
revised_sample_text = "unladen swallows fly quickly"
|
||||
sample_text_error = """\
|
||||
- laden swallows fly slowly
|
||||
? ^^^^
|
||||
+ unladen swallows fly quickly
|
||||
? ++ ^^^^^
|
||||
"""
|
||||
try:
|
||||
self.assertEqual(sample_text, revised_sample_text)
|
||||
except self.failureException as e:
|
||||
error = str(e).split('\n', 1)[1]
|
||||
self.assertTrue(sample_text_error == error)
|
||||
|
||||
def testAssertIsNone(self):
|
||||
self.assertIsNone(None)
|
||||
self.assertRaises(self.failureException, self.assertIsNone, False)
|
||||
|
|
Loading…
Reference in New Issue