id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 11032,Failed regressiontest on Windows for ImageField,Joeri Bekker,nobody,"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 """", line 1, in 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 }}}",,closed,File uploads/storage,dev,,fixed,regressiontest imagefield windows,,Ready for checkin,1,0,0,0,0,0