Skip to content

Commit 91795c8

Browse files
committed
Issue python#20776: Flesh out tests for importlib.machinery.PathFinder.
1 parent 4b8dd71 commit 91795c8

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

Lib/test/test_importlib/import_/test_path.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,53 @@ def test_None_on_sys_path(self):
112112
if email is not missing:
113113
sys.modules['email'] = email
114114

115+
def test_finder_with_find_module(self):
116+
class TestFinder:
117+
def find_module(self, fullname):
118+
return self.to_return
119+
failing_finder = TestFinder()
120+
failing_finder.to_return = None
121+
path = 'testing path'
122+
with util.import_state(path_importer_cache={path: failing_finder}):
123+
self.assertIsNone(
124+
self.machinery.PathFinder.find_spec('whatever', [path]))
125+
success_finder = TestFinder()
126+
success_finder.to_return = __loader__
127+
with util.import_state(path_importer_cache={path: success_finder}):
128+
spec = self.machinery.PathFinder.find_spec('whatever', [path])
129+
self.assertEqual(spec.loader, __loader__)
130+
131+
def test_finder_with_find_loader(self):
132+
class TestFinder:
133+
loader = None
134+
portions = []
135+
def find_loader(self, fullname):
136+
return self.loader, self.portions
137+
path = 'testing path'
138+
with util.import_state(path_importer_cache={path: TestFinder()}):
139+
self.assertIsNone(
140+
self.machinery.PathFinder.find_spec('whatever', [path]))
141+
success_finder = TestFinder()
142+
success_finder.loader = __loader__
143+
with util.import_state(path_importer_cache={path: success_finder}):
144+
spec = self.machinery.PathFinder.find_spec('whatever', [path])
145+
self.assertEqual(spec.loader, __loader__)
146+
147+
def test_finder_with_find_spec(self):
148+
class TestFinder:
149+
spec = None
150+
def find_spec(self, fullname, target=None):
151+
return self.spec
152+
path = 'testing path'
153+
with util.import_state(path_importer_cache={path: TestFinder()}):
154+
self.assertIsNone(
155+
self.machinery.PathFinder.find_spec('whatever', [path]))
156+
success_finder = TestFinder()
157+
success_finder.spec = self.machinery.ModuleSpec('whatever', __loader__)
158+
with util.import_state(path_importer_cache={path: success_finder}):
159+
got = self.machinery.PathFinder.find_spec('whatever', [path])
160+
self.assertEqual(got, success_finder.spec)
161+
115162
Frozen_FinderTests, Source_FinderTests = util.test_both(
116163
FinderTests, importlib=importlib, machinery=machinery)
117164

0 commit comments

Comments
 (0)