From ca6015ca71785dc59106ca36634d93daf59ff5bb Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Wed, 15 Aug 2012 02:47:02 -0700 Subject: [PATCH] Close files in the module_loading tests always. --- tests/regressiontests/utils/module_loading.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/regressiontests/utils/module_loading.py b/tests/regressiontests/utils/module_loading.py index cbd81c7294b..dffb51966cb 100644 --- a/tests/regressiontests/utils/module_loading.py +++ b/tests/regressiontests/utils/module_loading.py @@ -109,7 +109,12 @@ class ProxyFinder(object): def find_module(self, fullname, path=None): tail = fullname.rsplit('.', 1)[-1] try: - self._cache[fullname] = imp.find_module(tail, path) + fd, fn, info = imp.find_module(tail, path) + if fullname in self._cache: + old_fd = self._cache[fullname][0] + if old_fd: + old_fd.close() + self._cache[fullname] = (fd, fn, info) except ImportError: return None else: @@ -119,7 +124,11 @@ class ProxyFinder(object): if fullname in sys.modules: return sys.modules[fullname] fd, fn, info = self._cache[fullname] - return imp.load_module(fullname, fd, fn, info) + try: + return imp.load_module(fullname, fd, fn, info) + finally: + if fd: + fd.close() class TestFinder(object): def __init__(self, *args, **kwargs):