summaryrefslogtreecommitdiff
path: root/tests/regressiontests/utils/module_loading.py
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2012-09-05 09:39:03 -0400
committerAndrew Godwin <andrew@aeracode.org>2012-09-05 09:39:03 -0400
commitb546e7eb633022ee1962570387f22fb2bcea46ed (patch)
treef87f4a2d68fb66afae39148fa35489930710b623 /tests/regressiontests/utils/module_loading.py
parentcd583d6dbd222ae61331a6965b0e1fc86c974c50 (diff)
parentcff911f4ba3b3e6393c58da5131ce8b188a68f0c (diff)
Merge branch 'master' into schema-alteration
Diffstat (limited to 'tests/regressiontests/utils/module_loading.py')
-rw-r--r--tests/regressiontests/utils/module_loading.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/tests/regressiontests/utils/module_loading.py b/tests/regressiontests/utils/module_loading.py
index cbd81c7294..dffb51966c 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):