diff options
author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2019-08-30 04:25:48 (GMT) |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2019-08-30 04:25:48 (GMT) |
commit | 6a650aaf7735e30636db2721247f317064c2cfd4 (patch) | |
tree | cab175d9090dacfb5183ac30abf3339e6e3e7489 /Lib | |
parent | 496058f59937da478eb172c864502b5dcf67705b (diff) | |
download | cpython-6a650aaf7735e30636db2721247f317064c2cfd4.zip cpython-6a650aaf7735e30636db2721247f317064c2cfd4.tar.gz cpython-6a650aaf7735e30636db2721247f317064c2cfd4.tar.bz2 |
bpo-37976: Prevent shadowing of TypeError in zip() (GH-15592)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_builtin.py | 12 | ||||
-rw-r--r-- | Lib/test/test_itertools.py | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 6115579..1100c49 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1477,6 +1477,18 @@ class BuiltinTest(unittest.TestCase): z1 = zip(a, b) self.check_iter_pickle(z1, t, proto) + def test_zip_bad_iterable(self): + exception = TypeError() + + class BadIterable: + def __iter__(self): + raise exception + + with self.assertRaises(TypeError) as cm: + zip(BadIterable()) + + self.assertIs(cm.exception, exception) + def test_format(self): # Test the basic machinery of the format() builtin. Don't test # the specifics of the various formatters diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 573739f..98b8c83 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -971,6 +971,18 @@ class TestBasicOps(unittest.TestCase): self.pickletest(proto, zip_longest("abc", "defgh", fillvalue=1)) self.pickletest(proto, zip_longest("", "defgh")) + def test_zip_longest_bad_iterable(self): + exception = TypeError() + + class BadIterable: + def __iter__(self): + raise exception + + with self.assertRaises(TypeError) as cm: + zip_longest(BadIterable()) + + self.assertIs(cm.exception, exception) + def test_bug_7244(self): class Repeater: |