Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit