Issue #26837: assertSequenceEqual() now correctly outputs non-stringified
differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().
This commit is contained in:
parent
5b6f0aa71c
commit
685fbed7f9
|
@ -964,7 +964,7 @@ class TestCase(object):
|
|||
|
||||
if item1 != item2:
|
||||
differing += ('\nFirst differing element %d:\n%s\n%s\n' %
|
||||
(i, item1, item2))
|
||||
((i,) + _common_shorten_repr(item1, item2)))
|
||||
break
|
||||
else:
|
||||
if (len1 == len2 and seq_type is None and
|
||||
|
@ -977,7 +977,7 @@ class TestCase(object):
|
|||
'elements.\n' % (seq_type_name, len1 - len2))
|
||||
try:
|
||||
differing += ('First extra element %d:\n%s\n' %
|
||||
(len2, seq1[len2]))
|
||||
(len2, safe_repr(seq1[len2])))
|
||||
except (TypeError, IndexError, NotImplementedError):
|
||||
differing += ('Unable to index element %d '
|
||||
'of first %s\n' % (len2, seq_type_name))
|
||||
|
@ -986,7 +986,7 @@ class TestCase(object):
|
|||
'elements.\n' % (seq_type_name, len2 - len1))
|
||||
try:
|
||||
differing += ('First extra element %d:\n%s\n' %
|
||||
(len1, seq2[len1]))
|
||||
(len1, safe_repr(seq2[len1])))
|
||||
except (TypeError, IndexError, NotImplementedError):
|
||||
differing += ('Unable to index element %d '
|
||||
'of second %s\n' % (len1, seq_type_name))
|
||||
|
|
|
@ -1121,6 +1121,82 @@ test case
|
|||
error = str(e).split('\n', 1)[1]
|
||||
self.assertEqual(sample_text_error, error)
|
||||
|
||||
def testEqualityBytesWarning(self):
|
||||
if sys.flags.bytes_warning:
|
||||
def bytes_warning():
|
||||
return self.assertWarnsRegex(BytesWarning,
|
||||
'Comparison between bytes and string')
|
||||
else:
|
||||
def bytes_warning():
|
||||
return contextlib.ExitStack()
|
||||
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertEqual('a', b'a')
|
||||
with bytes_warning():
|
||||
self.assertNotEqual('a', b'a')
|
||||
|
||||
a = [0, 'a']
|
||||
b = [0, b'a']
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertListEqual(a, b)
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertTupleEqual(tuple(a), tuple(b))
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(a, tuple(b))
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(tuple(a), b)
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual('a', b'a')
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertSetEqual(set(a), set(b))
|
||||
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertListEqual(a, tuple(b))
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertTupleEqual(tuple(a), b)
|
||||
|
||||
a = [0, b'a']
|
||||
b = [0]
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertListEqual(a, b)
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertTupleEqual(tuple(a), tuple(b))
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(a, tuple(b))
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(tuple(a), b)
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSetEqual(set(a), set(b))
|
||||
|
||||
a = [0]
|
||||
b = [0, b'a']
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertListEqual(a, b)
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertTupleEqual(tuple(a), tuple(b))
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(a, tuple(b))
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSequenceEqual(tuple(a), b)
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertSetEqual(set(a), set(b))
|
||||
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertDictEqual({'a': 0}, {b'a': 0})
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertDictEqual({}, {b'a': 0})
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertDictEqual({b'a': 0}, {})
|
||||
|
||||
with self.assertRaises(self.failureException):
|
||||
self.assertCountEqual([b'a', b'a'], [b'a', b'a', b'a'])
|
||||
with bytes_warning():
|
||||
self.assertCountEqual(['a', b'a'], ['a', b'a'])
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertCountEqual(['a', 'a'], [b'a', b'a'])
|
||||
with bytes_warning(), self.assertRaises(self.failureException):
|
||||
self.assertCountEqual(['a', 'a', []], [b'a', b'a', []])
|
||||
|
||||
def testAssertIsNone(self):
|
||||
self.assertIsNone(None)
|
||||
self.assertRaises(self.failureException, self.assertIsNone, False)
|
||||
|
|
|
@ -107,6 +107,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #26837: assertSequenceEqual() now correctly outputs non-stringified
|
||||
differing items (like bytes in the -b mode). This affects assertListEqual()
|
||||
and assertTupleEqual().
|
||||
|
||||
- Issue #26041: Remove "will be removed in Python 3.7" from deprecation
|
||||
messages of platform.dist() and platform.linux_distribution().
|
||||
Patch by Kumaripaba Miyurusara Athukorala.
|
||||
|
|
Loading…
Reference in New Issue