mirror of https://github.com/python/cpython
Merged revisions 83030 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r83030 | antoine.pitrou | 2010-07-21 18:41:31 +0200 (mer., 21 juil. 2010) | 5 lines Issue #5395: check that array.fromfile() re-raises an IOError instead of replacing it with EOFError. (this is only an added test, but 2.x will get a fix too) ........
This commit is contained in:
parent
2f3379f978
commit
7a7013e830
|
@ -188,6 +188,17 @@ class BaseTest(unittest.TestCase):
|
|||
f.close()
|
||||
test_support.unlink(test_support.TESTFN)
|
||||
|
||||
def test_fromfile_ioerror(self):
|
||||
# Issue #5395: Check if fromfile raises a proper IOError
|
||||
# instead of EOFError.
|
||||
a = array.array(self.typecode)
|
||||
f = open(test_support.TESTFN, 'wb')
|
||||
try:
|
||||
self.assertRaises(IOError, a.fromfile, f, len(self.example))
|
||||
finally:
|
||||
f.close()
|
||||
test_support.unlink(test_support.TESTFN)
|
||||
|
||||
def test_filewrite(self):
|
||||
a = array.array(self.typecode, 2*self.example)
|
||||
f = open(test_support.TESTFN, 'wb')
|
||||
|
|
|
@ -355,6 +355,7 @@ Michiel de Hoon
|
|||
Brian Hooper
|
||||
Randall Hopper
|
||||
Nadav Horesh
|
||||
Jan Hosang
|
||||
Ken Howard
|
||||
Brad Howes
|
||||
Chih-Hao Huang
|
||||
|
|
|
@ -18,6 +18,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #5395: array.fromfile() would raise a spurious EOFError when an
|
||||
I/O error occurred. Now an IOError is raised instead. Patch by chuck
|
||||
(Jan Hosang).
|
||||
|
||||
- Issue 1712522: urllib.quote supports Unicode String with encoding and errors
|
||||
parameter. The encoding parameter defaults to utf-8 and errors to strict.
|
||||
Patch by Matt Giuca.
|
||||
|
|
|
@ -1228,8 +1228,14 @@ array_fromfile(arrayobject *self, PyObject *args)
|
|||
PyMem_RESIZE(item, char, Py_SIZE(self)*itemsize);
|
||||
self->ob_item = item;
|
||||
self->allocated = Py_SIZE(self);
|
||||
PyErr_SetString(PyExc_EOFError,
|
||||
"not enough items in file");
|
||||
if (ferror(fp)) {
|
||||
PyErr_SetFromErrno(PyExc_IOError);
|
||||
clearerr(fp);
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_EOFError,
|
||||
"not enough items in file");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue