Author: Brian Kearns <[email protected]>
Branch: stdlib-2.7.4
Changeset: r63300:ccbca586192b
Date: 2013-04-12 19:00 -0400
http://bitbucket.org/pypy/pypy/changeset/ccbca586192b/

Log:    test and fix for TextIO flush error on close

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
@@ -497,7 +497,8 @@
             try:
                 space.call_method(self, "flush")
             finally:
-                return space.call_method(self.w_buffer, "close")
+                ret = space.call_method(self.w_buffer, "close")
+            return ret
 
     # _____________________________________________________________
     # read methods
diff --git a/pypy/module/_io/test/test_textio.py 
b/pypy/module/_io/test/test_textio.py
--- a/pypy/module/_io/test/test_textio.py
+++ b/pypy/module/_io/test/test_textio.py
@@ -199,6 +199,15 @@
         b.name = "dummy"
         assert repr(t) == "<_io.TextIOWrapper name='dummy' encoding='utf-8'>"
 
+    def test_flush_error_on_close(self):
+        import _io
+        txt = _io.TextIOWrapper(_io.BytesIO(""), encoding="ascii")
+        def bad_flush():
+            raise IOError()
+        txt.flush = bad_flush
+        raises(IOError, txt.close)  # exception not swallowed
+        assert txt.closed
+
 
 class AppTestIncrementalNewlineDecoder:
     def test_newline_decoder(self):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to