[issue5395] array.fromfile not checking I/O errors
Mark Lawrence breamore...@yahoo.co.uk added the comment: With the latest patch on Windows Vista against 2.7 I got 12 EOFError errors instead of IOError. -- nosy: +BreamoreBoy versions: +Python 3.1 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Mark Lawrence breamore...@yahoo.co.uk added the comment: Sorry for the noise, forgot to rebuild the code. The tests run fine 543 tests ok, except I note that all the output is repeated 6 times, I don't understand this at all. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Antoine Pitrou pit...@free.fr added the comment: Will polish the patch and commit. -- assignee: - pitrou resolution: - accepted stage: patch review - commit review ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Antoine Pitrou pit...@free.fr added the comment: I've committed the new test in py3k (r83030) and 3.1 (r83033), and the full patch in 2.7 (r83031) and 2.6 (r83032). Thank you! -- resolution: accepted - fixed stage: commit review - committed/rejected status: open - closed versions: +Python 2.6 -Python 3.1, Python 3.2 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Antoine Pitrou pit...@free.fr added the comment: Regarding: The tests run fine 543 tests ok, except I note that all the output is repeated 6 times, I don't understand this at all. This is normal, all array tests are run once per array type, and 6 different array types are being tested. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Jan Hosang jan.hos...@gmail.com added the comment: Maybe you could create a file without read permission (000) and try to read from it. I just checked. If I don't have read permissions, I am not able to open the file. When I open a file and change permissions afterwards, I can read the complete file alright. (Checked with a 4mb file, I hope that's beyond buffering.) So I guess permissions are only checked when you open the file. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Eduardo Aguiar agu...@users.sourceforge.net added the comment: Another try. I have opened a file for writing, and have tried to read from it: fp = open ('xxx', 'w') fp.read () Traceback (most recent call last): File stdin, line 1, in module IOError: [Errno 9] Bad file descriptor -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Jan Hosang jan.hos...@gmail.com added the comment: Thanks Aduardo! (I could have sworn I tried that.) I changed the test to reading from a file in 'wb' mode, which raised a EOFError before and now raises IOErrors. -- Added file: http://bugs.python.org/file15055/array_ioerror.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Jan Hosang jan.hos...@gmail.com added the comment: 12) I removed the try/except around the import. I have no clue if os might be unavailable. Maybe leave out handling that until we see that breaking. I added the try/except because I saw that in other tests in the same file when importing gc. 3) Done. 4) The EOFError exceptions are tested in test_tofromfile. I tried to apply both the patches on the trunk but the tests don't pass. With the latest patch I get an EOFError instead of IOError in the assertRaises. That is the also behaviour before the patch, so the ferror(fp) does not fire. Either the test is inappropriate or your system doesn't regard reading a closed filehandle an error. I'm not able to investigate this as it works fine on my os x 10.6. What system did you test it on? Reliable ways of producing IOErrors are harder to find than I thought. Deleting the file between to reads makes it just look truncated. Another method I tried was crashing a process which holds the other end of a pipe, but that's messy and complicated. -- Added file: http://bugs.python.org/file15046/array_ioerror.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Eduardo Aguiar agu...@users.sourceforge.net added the comment: Maybe you could create a file without read permission (000) and try to read from it. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Jan Hosang jan.hos...@gmail.com added the comment: Ezio, I moved the test to a separate method. Also I couldn't find something to close the file if I don't care about errors. I thought an assertRises would be wrong, as I am not debugging files here, so I added a function to call a callable I expect to throw an exception (you said you don't like the try/close/except/pass). I don't know if it is okay to add functions to test_support, though. -- Added file: http://bugs.python.org/file15037/array_ioerror.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Antoine Pitrou pit...@free.fr added the comment: There doesn't seem to be any reason to introduce the expect_exception() helper, rather than to use a with statement. Am I mistaken? -- nosy: +pitrou stage: test needed - patch review versions: +Python 2.7, Python 3.2 -Python 2.6 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Antoine Pitrou pit...@free.fr added the comment: Ok, I get it, you want f.close() to always succeed, even if the underlying file descriptor has already been closed. Well, I so no reason to introduce a helper anyway, the following four lines are much more readable and explicit: try: f.close() except IOError: pass -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Ezio Melotti ezio.melo...@gmail.com added the comment: I tried to apply both the patches on the trunk but the tests don't pass. With the latest patch I get an EOFError instead of IOError in the assertRaises. The function I was talking about was test_support.unlink(), but that just removes the file, it doesn't close it, so the try/except is fine when you close it (I also see that you already added test_support.unlink() in the new patch). I agree with Antoine that the helper function is not necessary. A few more comments about the latest patch: 1) the try/except that imports the os module seems unnecessary to me; 2) if there are really cases where os is not available, the test should be skipped with a message that says that the os module is not available and that the test cannot be executed (with return the test is marked as 'passed' even if nothing is actually tested); 3) if os.close(f.fileno()) is required instead of a simpler f.close() please write a short comment to clarify why; 4) if there are cases where EOFError is raised and they are not tested, it would be nice to add another test that checks if/when EOFError is raised. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Changes by Ezio Melotti ezio.melo...@gmail.com: -- nosy: +ezio.melotti ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Jan Hosang jan.hos...@gmail.com added the comment: I attached a path for raising IOErrors in fromfile. I also added a testcase which failed before. The test opens a file and closes the file with os.close(fd) without telling the file object, so fromfile doesn't notice it's reading from a file that is actually closed. -- keywords: +patch nosy: +chuck Added file: http://bugs.python.org/file14963/array_ioerror.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
Changes by Daniel Diniz aja...@gmail.com: -- keywords: +easy priority: - normal stage: - test needed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue5395] array.fromfile not checking I/O errors
New submission from Eduardo Aguiar agu...@users.sourceforge.net: At arraymodule.c (line 1258): nread = fread(item + (Py_SIZE(self) - n) * itemsize, itemsize, n, fp); if (nread (size_t)n) { Py_SIZE(self) -= (n - nread); 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); return NULL; } When fread returns 0, ferror should be called to check if it was an EOF or an error condition. It is not handling OSErrors, such as I/O errors, raising always not enough items in file. -- components: Library (Lib) messages: 82936 nosy: aguiar severity: normal status: open title: array.fromfile not checking I/O errors type: behavior versions: Python 2.6 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue5395 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com