Commit f22c26ec authored by Benjamin Peterson's avatar Benjamin Peterson

#3703 unhelpful _fileio.FileIO error message when trying to open a directory

Reviewer: Gregory P. Smith
parent f07e5a9e
......@@ -101,6 +101,17 @@ class AutoFileTests(unittest.TestCase):
# should raise on closed file
self.assertRaises(ValueError, method)
def testOpendir(self):
# Issue 3703: opening a directory should fill the errno
# Windows always returns "[Errno 13]: Permission denied
# Unix calls dircheck() and returns "[Errno 21]: Is a directory"
try:
_fileio._FileIO('.', 'r')
except IOError as e:
self.assertNotEqual(e.errno, 0)
else:
self.fail("Should have raised IOError")
class OtherFileTests(unittest.TestCase):
......
......@@ -52,6 +52,9 @@ Library
- Fixed two format strings in the _collections module.
- #3703 _fileio.FileIO gave unhelpful error message when trying to open a
directory.
Extension Modules
-----------------
......
......@@ -262,7 +262,7 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
#endif
self->fd = open(name, flags, 0666);
Py_END_ALLOW_THREADS
if (self->fd < 0 || dircheck(self) < 0) {
if (self->fd < 0) {
#ifdef MS_WINDOWS
PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename);
#else
......@@ -270,6 +270,8 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
#endif
goto error;
}
if(dircheck(self) < 0)
goto error;
}
goto done;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment