From bf623ae8843dc30b28c574bec8d29fc14be59d86 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 19 Apr 2017 20:03:52 +0300 Subject: 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. --- Lib/test/test_io.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Lib/test') diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 32f76a6c62..46c7833b5c 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) -- cgit v1.2.1