diff options
author | Brett Cannon <brett@python.org> | 2012-04-03 00:33:56 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-03 00:33:56 (GMT) |
commit | 927d87470a0b6f7b0ca3f3a1b39fd3bdc0ec919a (patch) | |
tree | 14751257ed51a52e66dd9dcf85eb17ffb2fc77cf /Lib/importlib/test | |
parent | 368b4b74050290a77f32cafa8c7fac3542bc6308 (diff) | |
download | cpython-927d87470a0b6f7b0ca3f3a1b39fd3bdc0ec919a.zip cpython-927d87470a0b6f7b0ca3f3a1b39fd3bdc0ec919a.tar.gz cpython-927d87470a0b6f7b0ca3f3a1b39fd3bdc0ec919a.tar.bz2 |
If a module injects something into sys.modules as a side-effect of
importation, then respect that injection.
Discovered thanks to Lib/xml/parsers/expat.py injecting
xml.parsers.expat.errors and etree now importing that directly as a
module.
Diffstat (limited to 'Lib/importlib/test')
-rw-r--r-- | Lib/importlib/test/import_/test_packages.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/importlib/test/import_/test_packages.py b/Lib/importlib/test/import_/test_packages.py index faadc32..9590d5f 100644 --- a/Lib/importlib/test/import_/test_packages.py +++ b/Lib/importlib/test/import_/test_packages.py @@ -27,6 +27,19 @@ class ParentModuleTests(unittest.TestCase): with self.assertRaises(ImportError): import_util.import_('sys.no_submodules_here') + def test_module_not_package_but_side_effects(self): + # If a module injects something into sys.modules as a side-effect, then + # pick up on that fact. + name = 'mod' + subname = name + '.b' + def module_injection(): + sys.modules[subname] = 'total bunk' + mock_modules = util.mock_modules('mod', + module_code={'mod': module_injection}) + with mock_modules as mock: + with util.import_state(meta_path=[mock]): + submodule = import_util.import_(subname) + def test_main(): from test.support import run_unittest |