[pypy-commit] pypy use-file-star-for-file: use mode check from rfile
bdkearns
noreply at buildbot.pypy.org
Fri Aug 29 09:36:48 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73160:98475f7b0785
Date: 2014-08-29 03:34 -0400
http://bitbucket.org/pypy/pypy/changeset/98475f7b0785/
Log: use mode check from rfile
diff --git a/pypy/module/_file/interp_file.py b/pypy/module/_file/interp_file.py
--- a/pypy/module/_file/interp_file.py
+++ b/pypy/module/_file/interp_file.py
@@ -59,12 +59,6 @@
self.binary = "b" in mode
getopenstreams(self.space)[stream] = None
- def check_mode_ok(self, mode):
- if (not mode or mode[0] not in ['r', 'w', 'a', 'U'] or
- ('U' in mode and ('w' in mode or 'a' in mode))):
- space = self.space
- raise oefmt(space.w_ValueError, "invalid mode: '%s'", mode)
-
def check_closed(self):
if self.stream is None:
raise OperationError(self.space.w_ValueError,
@@ -95,7 +89,6 @@
@unwrap_spec(mode=str, buffering=int)
def direct___init__(self, w_name, mode='r', buffering=-1):
self.direct_close()
- self.check_mode_ok(mode)
self.w_name = w_name
stream = rfile.create_file(fsencode_w(self.space, w_name), mode, buffering)
self.fdopenstream(stream, mode)
@@ -112,7 +105,6 @@
def direct_fdopen(self, fd, mode='r', buffering=-1):
self.direct_close()
- self.check_mode_ok(mode)
self.w_name = self.space.wrap('<fdopen>')
stream = rfile.create_fdopen_rfile(fd, mode)
self.fdopenstream(stream, mode)
@@ -230,6 +222,8 @@
def file_fdopen(self, fd, mode="r", buffering=-1):
try:
self.direct_fdopen(fd, mode, buffering)
+ except ValueError as e:
+ raise OperationError(self.space.w_ValueError, self.space.wrap(str(e)))
except OSError as e:
raise wrap_oserror(self.space, e)
@@ -267,6 +261,8 @@
try:
try:
result = self.direct_%(name)s(%(callsig)s)
+ except ValueError as e:
+ raise OperationError(space.w_ValueError, space.wrap(str(e)))
except OSError as e:
raise wrap_oserror_as_ioerror(self.space, e, self.w_name)
finally:
diff --git a/pypy/module/_file/test/test_file.py b/pypy/module/_file/test/test_file.py
--- a/pypy/module/_file/test/test_file.py
+++ b/pypy/module/_file/test/test_file.py
@@ -72,6 +72,8 @@
except AttributeError:
fdopen = os.fdopen # when running with -A
fd = os.open(self.temppath, os.O_WRONLY | os.O_CREAT)
+ exc = raises(ValueError, fdopen, fd, "badmode")
+ assert str(exc.value) == "mode string must begin with one of 'r', 'w', 'a' or 'U', not 'badmode'"
f2 = fdopen(fd, "a")
f2.seek(0, 2)
f2.write("bar\nboo")
More information about the pypy-commit
mailing list