1+ from importlib import _bootstrap
12from importlib import machinery
23from .. import util
34from . import util as import_util
1213
1314class FinderTests (unittest .TestCase ):
1415
15- """Tests for SysPathImporter ."""
16+ """Tests for PathFinder ."""
1617
1718 def test_failure (self ):
1819 # Test None returned upon not finding a suitable finder.
19- def mock_implicit_hooks ():
20- return []
21- # XXX Not blackbox.
22- original_hooks = machinery .PathFinder ._implicit_hooks
23- machinery .PathFinder ._implicit_hooks = staticmethod (mock_implicit_hooks )
24- try :
25- with util .import_state ():
26- self .assert_ (machinery .PathFinder .find_module ('XXX' ) is None )
27- finally :
28- machinery .PathFinder ._implicit_hooks = original_hooks
20+ module = '<test module>'
21+ with util .import_state ():
22+ self .assert_ (machinery .PathFinder .find_module (module ) is None )
2923
3024 def test_sys_path (self ):
3125 # Test that sys.path is used when 'path' is None.
@@ -48,23 +42,6 @@ def test_path(self):
4842 loader = machinery .PathFinder .find_module (module , [path ])
4943 self .assert_ (loader is importer )
5044
51- def test_path_importer_cache_has_None (self ):
52- # Test that the default hook is used when sys.path_importer_cache
53- # contains None for a path.
54- module = '<test module>'
55- importer = util .mock_modules (module )
56- path = '<test path>'
57- # XXX Not blackbox.
58- original_hook = machinery .PathFinder ._default_hook
59- mock_hook = import_util .mock_path_hook (path , importer = importer )
60- machinery .PathFinder ._default_hook = staticmethod (mock_hook )
61- try :
62- with util .import_state (path_importer_cache = {path : None }):
63- loader = machinery .PathFinder .find_module (module , path = [path ])
64- self .assert_ (loader is importer )
65- finally :
66- machinery .PathFinder ._default_hook = original_hook
67-
6845 def test_path_hooks (self ):
6946 # Test that sys.path_hooks is used.
7047 # Test that sys.path_importer_cache is set.
@@ -78,29 +55,53 @@ def test_path_hooks(self):
7855 self .assert_ (path in sys .path_importer_cache )
7956 self .assert_ (sys .path_importer_cache [path ] is importer )
8057
58+
59+ class DefaultPathFinderTests (unittest .TestCase ):
60+
61+ """Test importlib._bootstrap._DefaultPathFinder."""
62+
8163 def test_implicit_hooks (self ):
8264 # Test that the implicit path hooks are used.
8365 existing_path = os .path .dirname (support .TESTFN )
8466 bad_path = '<path>'
8567 module = '<module>'
8668 assert not os .path .exists (bad_path )
8769 with util .import_state ():
88- nothing = machinery . PathFinder .find_module (module ,
89- path = [existing_path ])
70+ nothing = _bootstrap . _DefaultPathFinder .find_module (module ,
71+ path = [existing_path ])
9072 self .assert_ (nothing is None )
9173 self .assert_ (existing_path in sys .path_importer_cache )
9274 self .assert_ (not isinstance (sys .path_importer_cache [existing_path ],
9375 imp .NullImporter ))
94- nothing = machinery .PathFinder .find_module (module , path = [bad_path ])
76+ nothing = _bootstrap ._DefaultPathFinder .find_module (module ,
77+ path = [bad_path ])
9578 self .assert_ (nothing is None )
9679 self .assert_ (bad_path in sys .path_importer_cache )
9780 self .assert_ (isinstance (sys .path_importer_cache [bad_path ],
9881 imp .NullImporter ))
9982
83+ def test_path_importer_cache_has_None (self ):
84+ # Test that the default hook is used when sys.path_importer_cache
85+ # contains None for a path.
86+ module = '<test module>'
87+ importer = util .mock_modules (module )
88+ path = '<test path>'
89+ # XXX Not blackbox.
90+ original_hook = _bootstrap ._DefaultPathFinder ._default_hook
91+ mock_hook = import_util .mock_path_hook (path , importer = importer )
92+ _bootstrap ._DefaultPathFinder ._default_hook = staticmethod (mock_hook )
93+ try :
94+ with util .import_state (path_importer_cache = {path : None }):
95+ loader = _bootstrap ._DefaultPathFinder .find_module (module ,
96+ path = [path ])
97+ self .assert_ (loader is importer )
98+ finally :
99+ _bootstrap ._DefaultPathFinder ._default_hook = original_hook
100+
100101
101102def test_main ():
102103 from test .support import run_unittest
103- run_unittest (PathTests , __path__Tests , FinderTests )
104+ run_unittest (FinderTests , DefaultPathFinderTests )
104105
105106if __name__ == '__main__' :
106107 test_main ()
0 commit comments