Author: Armin Rigo <[email protected]>
Branch:
Changeset: r78251:92a888903431
Date: 2015-06-23 09:42 +0200
http://bitbucket.org/pypy/pypy/changeset/92a888903431/
Log: Give up, copy the whole test here and fix it
diff --git a/pypy/module/_io/interp_textio.py b/pypy/module/_io/interp_textio.py
--- a/pypy/module/_io/interp_textio.py
+++ b/pypy/module/_io/interp_textio.py
@@ -548,10 +548,6 @@
remain buffered in the decoder, yet to be converted."""
if not self.w_decoder:
- # very unsure about the following check, but some tests seem
- # to expect a ValueError instead of an IOError in case the
- # file was already closed.
- self._check_closed(space)
raise OperationError(space.w_IOError, space.wrap("not readable"))
if self.telling:
@@ -604,11 +600,8 @@
def read_w(self, space, w_size=None):
self._check_attached(space)
+ self._check_closed(space)
if not self.w_decoder:
- # very unsure about the following check, but some tests seem
- # to expect a ValueError instead of an IOError in case the
- # file was already closed.
- self._check_closed(space)
raise OperationError(space.w_IOError, space.wrap("not readable"))
size = convert_size(space, w_size)
@@ -649,6 +642,7 @@
def readline_w(self, space, w_limit=None):
self._check_attached(space)
+ self._check_closed(space)
self._writeflush(space)
limit = convert_size(space, w_limit)
@@ -744,7 +738,7 @@
def write_w(self, space, w_text):
self._check_attached(space)
- # self._check_closed(space)
+ self._check_closed(space)
if not self.w_encoder:
raise OperationError(space.w_IOError, space.wrap("not writable"))
diff --git a/pypy/module/_io/test/test_io.py b/pypy/module/_io/test/test_io.py
--- a/pypy/module/_io/test/test_io.py
+++ b/pypy/module/_io/test/test_io.py
@@ -391,3 +391,55 @@
f.seek(1, 0)
f.read(buffer_size * 2)
assert f.tell() == 1 + buffer_size * 2
+
+
+class AppTestIoAferClose:
+ spaceconfig = dict(usemodules=['_io'])
+
+ def setup_class(cls):
+ tmpfile = udir.join('tmpfile').ensure()
+ cls.w_tmpfile = cls.space.wrap(str(tmpfile))
+
+ def test_io_after_close(self):
+ import _io
+ for kwargs in [
+ {"mode": "w"},
+ {"mode": "wb"},
+ {"mode": "w", "buffering": 1},
+ {"mode": "w", "buffering": 2},
+ {"mode": "wb", "buffering": 0},
+ {"mode": "r"},
+ {"mode": "rb"},
+ {"mode": "r", "buffering": 1},
+ {"mode": "r", "buffering": 2},
+ {"mode": "rb", "buffering": 0},
+ {"mode": "w+"},
+ {"mode": "w+b"},
+ {"mode": "w+", "buffering": 1},
+ {"mode": "w+", "buffering": 2},
+ {"mode": "w+b", "buffering": 0},
+ ]:
+ print kwargs
+ f = _io.open(self.tmpfile, **kwargs)
+ f.close()
+ raises(ValueError, f.flush)
+ raises(ValueError, f.fileno)
+ raises(ValueError, f.isatty)
+ raises(ValueError, f.__iter__)
+ if hasattr(f, "peek"):
+ raises(ValueError, f.peek, 1)
+ raises(ValueError, f.read)
+ if hasattr(f, "read1"):
+ raises(ValueError, f.read1, 1024)
+ if hasattr(f, "readall"):
+ raises(ValueError, f.readall)
+ if hasattr(f, "readinto"):
+ raises(ValueError, f.readinto, bytearray(1024))
+ raises(ValueError, f.readline)
+ raises(ValueError, f.readlines)
+ raises(ValueError, f.seek, 0)
+ raises(ValueError, f.tell)
+ raises(ValueError, f.truncate)
+ raises(ValueError, f.write, b"" if "b" in kwargs['mode'] else u"")
+ raises(ValueError, f.writelines, [])
+ raises(ValueError, next, f)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit