#11032 closed (fixed)
Failed regressiontest on Windows for ImageField
Reported by: | Joeri Bekker | Owned by: | nobody |
---|---|---|---|
Component: | File uploads/storage | Version: | dev |
Severity: | Keywords: | regressiontest imagefield windows | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
On Windows (Vista32), the file_storage test fails if PIL is installed (if PIL is not installed, this test is not executed):
====================================================================== FAIL: Doctest: regressiontests.file_storage.models.__test__.API_TESTS ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\edc\django-trunk\django\test\_doctest.py", line 2180, in runTest AssertionError: Failed doctest test for regressiontests.file_storage.models.__test__.API_TESTS File "C:\edc\django_src\tests\regressiontests\file_storage\models.py", line unknown line number, in API_TESTS ---------------------------------------------------------------------- File "C:\edc\django_src\tests\regressiontests\file_storage\models.py", line ?, in regressiontests.file_storage.models.__test__.API_TESTS Failed example: shutil.rmtree(temp_storage_dir) Exception raised: Traceback (most recent call last): File "C:\edc\django-trunk\django\test\_doctest.py", line 1267, in __run File "<doctest regressiontests.file_storage.models.__test__.API_TESTS[26]>", line 1, in <module> shutil.rmtree(temp_storage_dir) File "C:\Program Files\Python 2.5\Lib\shutil.py", line 169, in rmtree rmtree(fullname, ignore_errors, onerror) File "C:\Program Files\Python 2.5\Lib\shutil.py", line 174, in rmtree onerror(os.remove, fullname, sys.exc_info()) File "C:\Program Files\Python 2.5\Lib\shutil.py", line 172, in rmtree os.remove(fullname) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\joeri\\appdata\\local\\temp\\tmp34vz8s\\tests\\mug' ---------------------------------------------------------------------- Ran 4 tests in 1.116s FAILED (failures=1)
When cleaning up at the end of the test (tests/regressiontests/file_storage/models.py), shutil.rmtree
has problems with p.mugshot._file
still being opened by a process. The quickfix is to add >>> p.mugshot.close()
just _before_ the last line of the test: >>> shutil.rmtree(temp_storage_dir)
.
It's a perk of shutil
on Windows (other platforms seem to don't care and just remove the file anyway) that exposes this but the actual cause might be deeper. The file (p.mugshot._file) is left open (or even reopened despite the dimension_cache...) by calling p.mugshot.width
and/or p.mugshot.height
. Removing the lines below from the test also "removes" the problem:
>>> p.mugshot.width 16 >>> p.mugshot.height 16
Attachments (1)
Change History (10)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Cool. Must have missed that one for the 1.1 milestone.
comment:3 by , 16 years ago
Resolution: | duplicate |
---|---|
Status: | closed → reopened |
Maybe I marked it as duplicate too soon. Applying the final patch (8817-final.patch) in #8817 still leads to the same failed test. However, the deeper cause I mentioned in the description is addressed in that ticket.
comment:4 by , 16 years ago
The file_storage tests fail for me on Windows as well, but for a different reason. "shot" is being held open, not "mug". If I remove the last test:
# Make sure that wrapping the file in a file still works >>> p3.mugshot.file.open() >>> p = Person.objects.create(name="Bob The Builder", mugshot=File(p3.mugshot.file)) >>> p.save()
everything is fine. If instead I just add p3.mugshot.file.close()
after the p.save()
, the test will also pass.
comment:5 by , 16 years ago
I probably should mention that I'm running the latest trunk, so I have the patch for #8817.
comment:6 by , 16 years ago
Has patch: | set |
---|
Attached a trivial patch for the latest trunk that allows the file_storage tests to pass on Windows.
comment:7 by , 16 years ago
milestone: | → 1.1 |
---|---|
Triage Stage: | Unreviewed → Ready for checkin |
comment:8 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
See #8817