summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_importlib
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-10-10 23:03:46 (GMT)
committerBrett Cannon <brett@python.org>2012-10-10 23:03:46 (GMT)
commita6ce4fd426cb9df0e4816a627c79aff0fc6ecf63 (patch)
tree09d85350d6408bf0422af543458737067e40e736 /Lib/test/test_importlib
parent3fa8c59024418e904abd4394b5ec47642f076ae3 (diff)
downloadcpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.zip
cpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.tar.gz
cpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.tar.bz2
Closes issue #15111: Calling __import__ with a module specified in
fromlist which causes its own ImportError (e.g. the module tries to import a non-existent module) should have that exception propagate.
Diffstat (limited to 'Lib/test/test_importlib')
-rw-r--r--Lib/test/test_importlib/import_/test_fromlist.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/Lib/test/test_importlib/import_/test_fromlist.py b/Lib/test/test_importlib/import_/test_fromlist.py
index 281961d..27b2270 100644
--- a/Lib/test/test_importlib/import_/test_fromlist.py
+++ b/Lib/test/test_importlib/import_/test_fromlist.py
@@ -52,7 +52,7 @@ class HandlingFromlist(unittest.TestCase):
module = import_util.import_('module', fromlist=['attr'])
self.assertEqual(module.__name__, 'module')
- def test_unexistent_object(self):
+ def test_nonexistent_object(self):
# [bad object]
with util.mock_modules('module') as importer:
with util.import_state(meta_path=[importer]):
@@ -69,6 +69,19 @@ class HandlingFromlist(unittest.TestCase):
self.assertTrue(hasattr(module, 'module'))
self.assertEqual(module.module.__name__, 'pkg.module')
+ def test_module_from_package_triggers_ImportError(self):
+ # If a submodule causes an ImportError because it tries to import
+ # a module which doesn't exist, that should let the ImportError
+ # propagate.
+ def module_code():
+ import i_do_not_exist
+ with util.mock_modules('pkg.__init__', 'pkg.mod',
+ module_code={'pkg.mod': module_code}) as importer:
+ with util.import_state(meta_path=[importer]):
+ with self.assertRaises(ImportError) as exc:
+ import_util.import_('pkg', fromlist=['mod'])
+ self.assertEquals('i_do_not_exist', exc.exception.name)
+
def test_empty_string(self):
with util.mock_modules('pkg.__init__', 'pkg.mod') as importer:
with util.import_state(meta_path=[importer]):