diff options
author | Meador Inge <meadori@gmail.com> | 2011-12-15 04:27:28 (GMT) |
---|---|---|
committer | Meador Inge <meadori@gmail.com> | 2011-12-15 04:27:28 (GMT) |
commit | d7afeeeb8dc8b4e2e59951a15b68f362282d447e (patch) | |
tree | 6e05ec5b94407e928228641563b41a47184137ee /Lib/importlib/test/util.py | |
parent | abbcd0872fc970bb83d8ff5f0f09ca988c172360 (diff) | |
parent | 416f12ddb3b7d780bb75563414b88b32c0cf7e67 (diff) | |
download | cpython-d7afeeeb8dc8b4e2e59951a15b68f362282d447e.zip cpython-d7afeeeb8dc8b4e2e59951a15b68f362282d447e.tar.gz cpython-d7afeeeb8dc8b4e2e59951a15b68f362282d447e.tar.bz2 |
Issue #13591: import_module potentially imports a module twice.
Diffstat (limited to 'Lib/importlib/test/util.py')
-rw-r--r-- | Lib/importlib/test/util.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/importlib/test/util.py b/Lib/importlib/test/util.py index 0c0c84c..93b7cd2 100644 --- a/Lib/importlib/test/util.py +++ b/Lib/importlib/test/util.py @@ -84,8 +84,9 @@ class mock_modules: """A mock importer/loader.""" - def __init__(self, *names): + def __init__(self, *names, module_code={}): self.modules = {} + self.module_code = {} for name in names: if not name.endswith('.__init__'): import_name = name @@ -105,6 +106,8 @@ class mock_modules: if import_name != name: module.__path__ = ['<mock __path__>'] self.modules[import_name] = module + if import_name in module_code: + self.module_code[import_name] = module_code[import_name] def __getitem__(self, name): return self.modules[name] @@ -120,6 +123,8 @@ class mock_modules: raise ImportError else: sys.modules[fullname] = self.modules[fullname] + if fullname in self.module_code: + self.module_code[fullname]() return self.modules[fullname] def __enter__(self): |