[Python-checkins] r69848 - in python/branches/io-c/Lib: _pyio.py test/test_io.py
benjamin.peterson
python-checkins at python.org
Sat Feb 21 22:33:54 CET 2009
Author: benjamin.peterson
Date: Sat Feb 21 22:33:53 2009
New Revision: 69848
Log:
fix some more tests broken by bag argument validation
Modified:
python/branches/io-c/Lib/_pyio.py
python/branches/io-c/Lib/test/test_io.py
Modified: python/branches/io-c/Lib/_pyio.py
==============================================================================
--- python/branches/io-c/Lib/_pyio.py (original)
+++ python/branches/io-c/Lib/_pyio.py Sat Feb 21 22:33:53 2009
@@ -820,6 +820,8 @@
"""
raw._checkReadable()
_BufferedIOMixin.__init__(self, raw)
+ if buffer_size <= 0:
+ raise ValueError("invalid buffer size")
self.buffer_size = buffer_size
self._reset_read_buf()
self._read_lock = Lock()
@@ -836,6 +838,8 @@
mode. If n is negative, read until EOF or until read() would
block.
"""
+ if n is not None and n < -1:
+ raise ValueError("invalid number of bytes to read")
with self._read_lock:
return self._read_unlocked(n)
@@ -910,7 +914,9 @@
"""Reads up to n bytes, with at most one read() system call."""
# Returns up to n bytes. If at least one byte is buffered, we
# only return buffered bytes. Otherwise, we do one raw read.
- if n <= 0:
+ if n < 0:
+ raise ValueError("number of bytes ot read must be positive")
+ if n == 0:
return b""
with self._read_lock:
self._peek_unlocked(1)
@@ -921,6 +927,8 @@
return self.raw.tell() - len(self._read_buf) + self._read_pos
def seek(self, pos, whence=0):
+ if not (0 <= whence <= 2):
+ raise ValueError("invalid whence value")
with self._read_lock:
if whence == 1:
pos -= len(self._read_buf) - self._read_pos
@@ -942,6 +950,8 @@
buffer_size=DEFAULT_BUFFER_SIZE, max_buffer_size=None):
raw._checkWritable()
_BufferedIOMixin.__init__(self, raw)
+ if buffer_size <= 0:
+ raise ValueError("invalid buffer size")
self.buffer_size = buffer_size
self.max_buffer_size = (2*buffer_size
if max_buffer_size is None
@@ -1010,6 +1020,8 @@
return self.raw.tell() + len(self._write_buf)
def seek(self, pos, whence=0):
+ if not (0 <= whence <= 2):
+ raise ValueError("invalid whence")
with self._write_lock:
self._flush_unlocked()
return self.raw.seek(pos, whence)
@@ -1298,6 +1310,8 @@
def __init__(self, buffer, encoding=None, errors=None, newline=None,
line_buffering=False):
+ if newline is not None and not isinstance(newline, str):
+ raise TypeError("illegal newline type: %r" % (type(newline),))
if newline not in (None, "", "\n", "\r", "\r\n"):
raise ValueError("illegal newline value: %r" % (newline,))
if encoding is None:
Modified: python/branches/io-c/Lib/test/test_io.py
==============================================================================
--- python/branches/io-c/Lib/test/test_io.py (original)
+++ python/branches/io-c/Lib/test/test_io.py Sat Feb 21 22:33:53 2009
@@ -556,11 +556,8 @@
bufio.__init__(rawio, buffer_size=16)
self.assertEquals(b"abc", bufio.read())
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
- self.assertRaises(ValueError, bufio.read)
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
- self.assertRaises(ValueError, bufio.read)
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
- self.assertRaises(ValueError, bufio.read)
if sys.maxsize > 0x7FFFFFFF:
# The allocation can succeed on 32-bit builds, e.g. with more
# than 2GB RAM and a 64-bit kernel.
@@ -719,6 +716,16 @@
MockRawIO = CMockRawIO
MockFileIO = CMockFileIO
+ def test_initialization(self):
+ rawio = self.MockRawIO([b"abc"])
+ bufio = self.tp(rawio)
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
+ self.assertRaises(ValueError, bufio.read)
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
+ self.assertRaises(ValueError, bufio.read)
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
+ self.assertRaises(ValueError, bufio.read)
+
class PyBufferedReaderTest(BufferedReaderTest):
tp = pyio.BufferedReader
BlockingIOError = pyio.BlockingIOError
@@ -740,11 +747,8 @@
self.assertEquals(3, bufio.write(b"abc"))
bufio.flush()
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
- self.assertRaises(ValueError, bufio.write, b"def")
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
- self.assertRaises(ValueError, bufio.write, b"def")
self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
- self.assertRaises(ValueError, bufio.write, b"def")
if sys.maxsize > 0x7FFFFFFF:
# The allocation can succeed on 32-bit builds, e.g. with more
# than 2GB RAM and a 64-bit kernel.
@@ -958,6 +962,17 @@
MisbehavedRawIO = CMisbehavedRawIO
MockNonBlockWriterIO = CMockNonBlockWriterIO
+ def test_initialization(self):
+ rawio = self.MockRawIO()
+ bufio = self.tp(rawio)
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
+ self.assertRaises(ValueError, bufio.write, b"def")
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
+ self.assertRaises(ValueError, bufio.write, b"def")
+ self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
+ self.assertRaises(ValueError, bufio.write, b"def")
+
+
class PyBufferedWriterTest(BufferedWriterTest):
tp = pyio.BufferedWriter
BlockingIOError = pyio.BlockingIOError
@@ -1302,9 +1317,7 @@
self.assertEquals(t.line_buffering, True)
self.assertEquals("\xe9\n", t.readline())
self.assertRaises(TypeError, t.__init__, b, newline=42)
- self.assertRaises(ValueError, t.read)
self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
- self.assertRaises(ValueError, t.read)
def testLineBuffering(self):
r = self.BytesIO()
@@ -1792,6 +1805,15 @@
TextIOWrapper = io.TextIOWrapper
BytesIO = io.BytesIO
+ def test_initialization(self):
+ r = self.BytesIO(b"\xc3\xa9\n\n")
+ b = self.BufferedReader(r, 1000)
+ t = self.TextIOWrapper(b)
+ self.assertRaises(TypeError, t.__init__, b, newline=42)
+ self.assertRaises(ValueError, t.read)
+ self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
+ self.assertRaises(ValueError, t.read)
+
class PyTextIOWrapperTest(TextIOWrapperTest):
open = staticmethod(pyio.open)
BufferedReader = pyio.BufferedReader
More information about the Python-checkins
mailing list