diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 849dabb3399..8eff65c9ee5 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -601,7 +601,7 @@ class PathFinder: @classmethod def _implicit_hooks(cls): """Return a list of the implicit path hooks.""" - return [self._default_hook, imp.NullImporter] + return [cls._default_hook, imp.NullImporter] @classmethod def _path_hooks(cls, path): diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py index 70dae2f7094..6bace12036c 100644 --- a/Lib/importlib/test/import_/test_path.py +++ b/Lib/importlib/test/import_/test_path.py @@ -208,8 +208,16 @@ class FinderTests(unittest.TestCase): def test_path_hooks(self): # Test that sys.path_hooks is used. - # TODO(brett.cannon) implement - pass + # Test that sys.path_importer_cache is set. + module = '' + path = '' + importer = util.mock_modules(module) + hook = import_util.mock_path_hook(path, importer=importer) + with util.import_state(path_hooks=[hook]): + loader = machinery.PathFinder.find_module(module, [path]) + self.assert_(loader is importer) + self.assert_(path in sys.path_importer_cache) + self.assert_(sys.path_importer_cache[path] is importer) def test_implicit_hooks(self): # Test that the implicit path hooks are used.