#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