Author: Brian Kearns <[email protected]>
Branch: use-file-star-for-file
Changeset: r73506:645e06e76b50
Date: 2014-09-12 11:13 -0400
http://bitbucket.org/pypy/pypy/changeset/645e06e76b50/
Log: fix buffering arg to fdopen
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
@@ -105,6 +105,12 @@
stream = rfile.create_file(fsencode_w(self.space, w_name), mode,
buffering)
self.fdopenstream(stream, mode)
+ def direct_fdopen(self, fd, mode='r', buffering=-1):
+ self.direct_close()
+ self.w_name = self.space.wrap('<fdopen>')
+ stream = rfile.create_fdopen_rfile(fd, mode, buffering)
+ self.fdopenstream(stream, mode)
+
def direct___enter__(self):
self.check_closed()
return self
@@ -115,12 +121,6 @@
# can't return close() value
return None
- def direct_fdopen(self, fd, mode='r', buffering=-1):
- self.direct_close()
- self.w_name = self.space.wrap('<fdopen>')
- stream = rfile.create_fdopen_rfile(fd, mode)
- self.fdopenstream(stream, mode)
-
def direct_close(self):
stream = self.stream
if stream is not None:
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
@@ -267,7 +267,7 @@
with self.file(self.temppath, 'r') as f:
raises(IOError, f.truncate, 100)
- def test_write_full(self):
+ def test_write_full_regular(self):
try:
f = self.file('/dev/full', 'w', 1)
except IOError:
@@ -281,6 +281,22 @@
finally:
f.close()
+ def test_write_full_fdopen(self):
+ import os
+ fd = os.open('/dev/full', os.O_WRONLY)
+ try:
+ f = os.fdopen(fd, 'w', 1)
+ except IOError:
+ skip("requires '/dev/full'")
+ try:
+ f.write('hello')
+ raises(IOError, f.write, '\n')
+ f.write('zzz')
+ raises(IOError, f.flush)
+ f.flush()
+ finally:
+ f.close()
+
class AppTestConcurrency(object):
# these tests only really make sense on top of a translated pypy-c,
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit