diff --git a/Lib/modulefinder.py b/Lib/modulefinder.py --- a/Lib/modulefinder.py +++ b/Lib/modulefinder.py @@ -1,12 +1,13 @@ """Find modules used by a script, using introspection.""" import dis import imp +import importlib.machinery import marshal import os import sys import types import struct # XXX Clean up once str8's cstor matches bytes. LOAD_CONST = bytes([dis.opname.index('LOAD_CONST')]) diff --git a/Lib/test/test_modulefinder.py b/Lib/test/test_modulefinder.py --- a/Lib/test/test_modulefinder.py +++ b/Lib/test/test_modulefinder.py @@ -191,16 +191,28 @@ relative_import_test_3 = [ """\ a/__init__.py def foo(): pass a/module.py from . import foo from . import bar """] +relative_import_test_4 = [ + "a.module", + ["a", "a.module"], + [], + [], + """\ +a/__init__.py + def foo(): pass +a/module.py + from . import * +"""] + def open_file(path): dirname = os.path.dirname(path) try: os.makedirs(dirname) except OSError as e: if e.errno != errno.EEXIST: raise @@ -268,14 +280,17 @@ class ModuleFinderTest(unittest.TestCase self._do_test(relative_import_test) def test_relative_imports_2(self): self._do_test(relative_import_test_2) def test_relative_imports_3(self): self._do_test(relative_import_test_3) + def test_relative_imports_4(self): + self._do_test(relative_import_test_4) + def test_main(): support.run_unittest(ModuleFinderTest) if __name__ == "__main__": unittest.main()