diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-10-14 21:02:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-14 21:02:57 (GMT) |
commit | e890421e334ccf0c000c6b29c4a521d86cd12f47 (patch) | |
tree | 17b21008d8c8faf50ca3d512e670c9a71aab4318 /Lib/test/test_bytes.py | |
parent | de2aea0ff02fa9486365ce9d215bef150fae3a0b (diff) | |
download | cpython-e890421e334ccf0c000c6b29c4a521d86cd12f47.zip cpython-e890421e334ccf0c000c6b29c4a521d86cd12f47.tar.gz cpython-e890421e334ccf0c000c6b29c4a521d86cd12f47.tar.bz2 |
bpo-34974: Do not replace unexpected errors in bytes() and bytearray(). (GH-9852)
bytes and bytearray constructors converted unexpected exceptions
(e.g. MemoryError and KeyboardInterrupt) to TypeError.
Diffstat (limited to 'Lib/test/test_bytes.py')
-rw-r--r-- | Lib/test/test_bytes.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index b7b48bf..b9c5b62 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -126,8 +126,8 @@ class BaseBytesTest: a = self.type2test(b"\x01\x02\x03") self.assertEqual(a, b"\x01\x02\x03") - # http://bugs.python.org/issue29159 - # Fallback when __index__ raises exception other than OverflowError + # Issues #29159 and #34974. + # Fallback when __index__ raises a TypeError class B(bytes): def __index__(self): raise TypeError @@ -184,6 +184,20 @@ class BaseBytesTest: except (OverflowError, MemoryError): pass + def test_constructor_exceptions(self): + # Issue #34974: bytes and bytearray constructors replace unexpected + # exceptions. + class BadInt: + def __index__(self): + 1/0 + self.assertRaises(ZeroDivisionError, self.type2test, BadInt()) + self.assertRaises(ZeroDivisionError, self.type2test, [BadInt()]) + + class BadIterable: + def __iter__(self): + 1/0 + self.assertRaises(ZeroDivisionError, self.type2test, BadIterable()) + def test_compare(self): b1 = self.type2test([1, 2, 3]) b2 = self.type2test([1, 2, 3]) |