diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2012-09-05 09:39:03 -0400 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2012-09-05 09:39:03 -0400 |
| commit | b546e7eb633022ee1962570387f22fb2bcea46ed (patch) | |
| tree | f87f4a2d68fb66afae39148fa35489930710b623 /tests/regressiontests/utils/module_loading.py | |
| parent | cd583d6dbd222ae61331a6965b0e1fc86c974c50 (diff) | |
| parent | cff911f4ba3b3e6393c58da5131ce8b188a68f0c (diff) | |
Merge branch 'master' into schema-alteration
Diffstat (limited to 'tests/regressiontests/utils/module_loading.py')
| -rw-r--r-- | tests/regressiontests/utils/module_loading.py | 13 |
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): |
