Index: Lib/test/test_linecache.py =================================================================== --- Lib/test/test_linecache.py (revision 76671) +++ Lib/test/test_linecache.py (working copy) @@ -114,6 +114,7 @@ for index, line in enumerate(source): self.assertEquals(line, getline(source_name, index + 1)) source_list.append(line) + source.close() finally: support.unlink(source_name) Index: Lib/test/support.py =================================================================== --- Lib/test/support.py (revision 76671) +++ Lib/test/support.py (working copy) @@ -12,6 +12,7 @@ import os import platform import shutil +import time import warnings import unittest import importlib @@ -175,6 +176,23 @@ os.unlink(filename) except OSError: pass + if os.name == 'nt': + ERROR_FILE_NOT_FOUND = 2 + ERROR_PATH_NOT_FOUND = 3 + ERROR_ACCESS_DENIED = 5 + for i in range(5): + try: + os.stat(filename) + except WindowsError as e: + if e.winerror in (ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND): + return + elif e.winerror == ERROR_ACCESS_DENIED: + pass + else: + raise + # increate sleep time every next iteration + time.sleep(i * 0.1) + raise AssertionError("Cannot delete " + filename) def rmtree(path): try: