Issue #15902: Fix imp.load_module() to accept None as a file when

trying to load an extension module.

While at it, also add a proper unittest.skipIf() guard to another test
involving imp.load_dynamic().
This commit is contained in:
Brett Cannon 2013-05-03 10:37:08 -04:00
parent b98dcc1f53
commit 9d0f772c51
3 changed files with 24 additions and 2 deletions

View file

@ -208,6 +208,8 @@ class ImportTests(unittest.TestCase):
self.assertIsNot(orig_getenv, new_os.getenv)
@support.cpython_only
@unittest.skipIf(not hasattr(imp, 'load_dynamic'),
'imp.load_dynamic() required')
def test_issue15828_load_extensions(self):
# Issue 15828 picked up that the adapter between the old imp API
# and importlib couldn't handle C extensions
@ -230,6 +232,19 @@ class ImportTests(unittest.TestCase):
self.assertIn(path, err.exception.path)
self.assertEqual(name, err.exception.name)
@support.cpython_only
@unittest.skipIf(not hasattr(imp, 'load_dynamic'),
'imp.load_dynamic() required')
def test_load_module_extension_file_is_None(self):
# When loading an extension module and the file is None, open one
# on the behalf of imp.load_dynamic().
# Issue #15902
name = '_heapq'
found = imp.find_module(name)
assert found[2][2] == imp.C_EXTENSION
found[0].close()
imp.load_module(name, None, *found[1:])
class ReloadTests(unittest.TestCase):