diff options
author | Brett Cannon <brett@python.org> | 2014-05-09 17:38:11 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2014-05-09 17:38:11 (GMT) |
commit | 91795c8e34cdae5616b4dd56fe616476dfdc1267 (patch) | |
tree | eb9c1d8c57b3bc45c59af0dd33d0bee3d3863691 /Lib/test/test_importlib | |
parent | 4b8dd71d0aae6ac1c065c3141d55752515585ad8 (diff) | |
download | cpython-91795c8e34cdae5616b4dd56fe616476dfdc1267.zip cpython-91795c8e34cdae5616b4dd56fe616476dfdc1267.tar.gz cpython-91795c8e34cdae5616b4dd56fe616476dfdc1267.tar.bz2 |
Issue #20776: Flesh out tests for importlib.machinery.PathFinder.
Diffstat (limited to 'Lib/test/test_importlib')
-rw-r--r-- | Lib/test/test_importlib/import_/test_path.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/test/test_importlib/import_/test_path.py b/Lib/test/test_importlib/import_/test_path.py index 1274f8c..fa24ae3 100644 --- a/Lib/test/test_importlib/import_/test_path.py +++ b/Lib/test/test_importlib/import_/test_path.py @@ -112,6 +112,53 @@ class FinderTests: if email is not missing: sys.modules['email'] = email + def test_finder_with_find_module(self): + class TestFinder: + def find_module(self, fullname): + return self.to_return + failing_finder = TestFinder() + failing_finder.to_return = None + path = 'testing path' + with util.import_state(path_importer_cache={path: failing_finder}): + self.assertIsNone( + self.machinery.PathFinder.find_spec('whatever', [path])) + success_finder = TestFinder() + success_finder.to_return = __loader__ + with util.import_state(path_importer_cache={path: success_finder}): + spec = self.machinery.PathFinder.find_spec('whatever', [path]) + self.assertEqual(spec.loader, __loader__) + + def test_finder_with_find_loader(self): + class TestFinder: + loader = None + portions = [] + def find_loader(self, fullname): + return self.loader, self.portions + path = 'testing path' + with util.import_state(path_importer_cache={path: TestFinder()}): + self.assertIsNone( + self.machinery.PathFinder.find_spec('whatever', [path])) + success_finder = TestFinder() + success_finder.loader = __loader__ + with util.import_state(path_importer_cache={path: success_finder}): + spec = self.machinery.PathFinder.find_spec('whatever', [path]) + self.assertEqual(spec.loader, __loader__) + + def test_finder_with_find_spec(self): + class TestFinder: + spec = None + def find_spec(self, fullname, target=None): + return self.spec + path = 'testing path' + with util.import_state(path_importer_cache={path: TestFinder()}): + self.assertIsNone( + self.machinery.PathFinder.find_spec('whatever', [path])) + success_finder = TestFinder() + success_finder.spec = self.machinery.ModuleSpec('whatever', __loader__) + with util.import_state(path_importer_cache={path: success_finder}): + got = self.machinery.PathFinder.find_spec('whatever', [path]) + self.assertEqual(got, success_finder.spec) + Frozen_FinderTests, Source_FinderTests = util.test_both( FinderTests, importlib=importlib, machinery=machinery) |