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

Reply via email to