readline() args must be an int #3521

This commit is contained in:
Benjamin Peterson 2009-04-24 22:59:52 +00:00
parent 34596a90c8
commit b01138a66e
2 changed files with 8 additions and 1 deletions

View File

@ -460,6 +460,8 @@ class IOBase(metaclass=abc.ABCMeta):
return 1
if limit is None:
limit = -1
elif not isinstance(limit, int):
raise TypeError("limit must be an integer")
res = bytearray()
while limit < 0 or len(res) < limit:
b = self.read(nreadahead())
@ -1741,6 +1743,8 @@ class TextIOWrapper(TextIOBase):
raise ValueError("read from closed file")
if limit is None:
limit = -1
elif not isinstance(limit, int):
raise TypeError("limit must be an integer")
# Grab all the decoded text (we will rewind any extra bits later).
line = self._get_decoded_chars()

View File

@ -319,7 +319,7 @@ class IOTest(unittest.TestCase):
f.close()
def test_readline(self):
f = io.open(support.TESTFN, "wb")
f = self.open(support.TESTFN, "wb")
f.write(b"abc\ndef\nxyzzy\nfoo\x00bar\nanother line")
f.close()
f = self.open(support.TESTFN, "rb")
@ -329,7 +329,10 @@ class IOTest(unittest.TestCase):
self.assertEqual(f.readline(4), b"zzy\n")
self.assertEqual(f.readline(), b"foo\x00bar\n")
self.assertEqual(f.readline(), b"another line")
self.assertRaises(TypeError, f.readline, 5.3)
f.close()
f = self.open(support.TESTFN, "r")
self.assertRaises(TypeError, f.readline, 5.3)
def test_raw_bytes_io(self):
f = self.BytesIO()