Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r61515:de6b3b05077e
Date: 2013-02-20 16:11 -0800
http://bitbucket.org/pypy/pypy/changeset/de6b3b05077e/
Log: fix BufferedReader.seek to always check the underlying raw's
seekability
diff --git a/pypy/module/_io/interp_bufferedio.py
b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -266,6 +266,7 @@
raise operationerrfmt(space.w_ValueError,
"whence must be between 0 and 2, not %d", whence)
self._check_closed(space, "seek of closed file")
+ check_seekable_w(space, self.w_raw)
if whence != 2 and self.readable:
# Check if seeking leaves us inside the current buffer, so as to
# return quickly if possible. Also, we needn't take the lock in
diff --git a/pypy/module/_io/test/test_bufferedio.py
b/pypy/module/_io/test/test_bufferedio.py
--- a/pypy/module/_io/test/test_bufferedio.py
+++ b/pypy/module/_io/test/test_bufferedio.py
@@ -223,9 +223,12 @@
raise _io.UnsupportedOperation("not seekable")
def tell(self, *args):
raise _io.UnsupportedOperation("not seekable")
- bufio = _io.BufferedReader(Unseekable())
+ bufio = _io.BufferedReader(Unseekable(b"A" * 10))
raises(_io.UnsupportedOperation, bufio.tell)
raises(_io.UnsupportedOperation, bufio.seek, 0)
+ bufio.read(1)
+ raises(_io.UnsupportedOperation, bufio.seek, 0)
+ raises(_io.UnsupportedOperation, bufio.tell)
class AppTestBufferedReaderWithThreads(AppTestBufferedReader):
spaceconfig = dict(usemodules=['_io', 'thread'])
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit