#3703 unhelpful _fileio.FileIO error message when trying to open a directory
Reviewer: Gregory P. Smith
This commit is contained in:
parent
f07e5a9e4b
commit
f22c26ecf4
|
@ -101,6 +101,17 @@ class AutoFileTests(unittest.TestCase):
|
||||||
# should raise on closed file
|
# should raise on closed file
|
||||||
self.assertRaises(ValueError, method)
|
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):
|
class OtherFileTests(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,9 @@ Library
|
||||||
|
|
||||||
- Fixed two format strings in the _collections module.
|
- Fixed two format strings in the _collections module.
|
||||||
|
|
||||||
|
- #3703 _fileio.FileIO gave unhelpful error message when trying to open a
|
||||||
|
directory.
|
||||||
|
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -262,7 +262,7 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
|
||||||
#endif
|
#endif
|
||||||
self->fd = open(name, flags, 0666);
|
self->fd = open(name, flags, 0666);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (self->fd < 0 || dircheck(self) < 0) {
|
if (self->fd < 0) {
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename);
|
PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename);
|
||||||
#else
|
#else
|
||||||
|
@ -270,6 +270,8 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
|
||||||
#endif
|
#endif
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
if(dircheck(self) < 0)
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
goto done;
|
goto done;
|
||||||
|
|
Loading…
Reference in New Issue