]> granicus.if.org Git - python/commitdiff
Issue #4237: io.FileIO() was raising invalid warnings caused by insufficient initiali...
authorChristian Heimes <christian@cheimes.de>
Thu, 30 Oct 2008 21:23:35 +0000 (21:23 +0000)
committerChristian Heimes <christian@cheimes.de>
Thu, 30 Oct 2008 21:23:35 +0000 (21:23 +0000)
Lib/test/test_io.py
Modules/_fileio.c

index bcb37d7d839712bb862bb4e32faf9b5d55a34532..ea965d77d56f91cd87a49fc9acee7fd3f56f97bd 100644 (file)
@@ -1237,6 +1237,13 @@ class MiscIOTest(unittest.TestCase):
             else:
                 self.assert_(issubclass(obj, io.IOBase))
 
+    def test_fileio_warnings(self):
+        with support.check_warnings() as w:
+            self.assertEqual(w.warnings, [])
+            self.assertRaises(TypeError, io.FileIO, [])
+            self.assertEqual(w.warnings, [])
+            self.assertRaises(ValueError, io.FileIO, "/some/invalid/name", "rt")
+            self.assertEqual(w.warnings, [])
 
 def test_main():
     support.run_unittest(IOTest, BytesIOTest, StringIOTest,
index 3b0f81b0f402584f780d6b1d475dd1fff3e93a5b..4b3519434ae7d68df51f6e2680dad26e1a5cf9d7 100644 (file)
@@ -86,6 +86,10 @@ fileio_new(PyTypeObject *type, PyObject *args, PyObject *kews)
        self = (PyFileIOObject *) type->tp_alloc(type, 0);
        if (self != NULL) {
                self->fd = -1;
+               self->readable = 0;
+               self->writable = 0;
+               self->seekable = -1;
+               self->closefd = 1;
                self->weakreflist = NULL;
        }
 
@@ -179,8 +183,6 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
            }
        }
 
-       self->readable = self->writable = 0;
-       self->seekable = -1;
        s = mode;
        while (*s) {
                switch (*s++) {