summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_io.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-04-19 17:03:52 (GMT)
committerGitHub <noreply@github.com>2017-04-19 17:03:52 (GMT)
commitbf623ae8843dc30b28c574bec8d29fc14be59d86 (patch)
tree0a7ab5b441e0306767bfbc6da4522e4af34ab9e6 /Lib/test/test_io.py
parentc209b70d610da50a844a3c10f37d6183bade3446 (diff)
downloadcpython-bf623ae8843dc30b28c574bec8d29fc14be59d86.zip
cpython-bf623ae8843dc30b28c574bec8d29fc14be59d86.tar.gz
cpython-bf623ae8843dc30b28c574bec8d29fc14be59d86.tar.bz2
bpo-30061: Check if PyObject_Size()/PySequence_Size()/PyMapping_Size() (#1096)
raised an error. Replace them with using concrete types API that never fails if appropriate.
Diffstat (limited to 'Lib/test/test_io.py')
-rw-r--r--Lib/test/test_io.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 32f76a6..46c7833 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -543,6 +543,22 @@ class IOTest(unittest.TestCase):
with self.open(support.TESTFN, "r") as f:
self.assertRaises(TypeError, f.readline, 5.3)
+ def test_readline_nonsizeable(self):
+ # Issue #30061
+ # Crash when readline() returns an object without __len__
+ class R(self.IOBase):
+ def readline(self):
+ return None
+ self.assertRaises((TypeError, StopIteration), next, R())
+
+ def test_next_nonsizeable(self):
+ # Issue #30061
+ # Crash when __next__() returns an object without __len__
+ class R(self.IOBase):
+ def __next__(self):
+ return None
+ self.assertRaises(TypeError, R().readlines, 1)
+
def test_raw_bytes_io(self):
f = self.BytesIO()
self.write_ops(f)