diff options
author | Brett Cannon <bcannon@gmail.com> | 2009-02-06 00:07:49 (GMT) |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2009-02-06 00:07:49 (GMT) |
commit | 6411aa5dd429acf4cd8f41c8e798d3df364d469a (patch) | |
tree | 9b7ef607bcfff5e650622fbe105f3f5ca57b2159 /Lib/importlib | |
parent | 1f9bcd38a9868b0d320681c603d5b4aa20ec54fe (diff) | |
download | cpython-6411aa5dd429acf4cd8f41c8e798d3df364d469a.zip cpython-6411aa5dd429acf4cd8f41c8e798d3df364d469a.tar.gz cpython-6411aa5dd429acf4cd8f41c8e798d3df364d469a.tar.bz2 |
Finish implementing tests for importlib.machinery.PathFinder by testing that
implicit hooks are handled properly.
Diffstat (limited to 'Lib/importlib')
-rw-r--r-- | Lib/importlib/NOTES | 22 | ||||
-rw-r--r-- | Lib/importlib/test/import_/test_path.py | 23 |
2 files changed, 31 insertions, 14 deletions
diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES index 97db642..538e874 100644 --- a/Lib/importlib/NOTES +++ b/Lib/importlib/NOTES @@ -9,11 +9,15 @@ to do * Create meta_path importer for sys.path. - + Create hook. - + Write tests. - + Rewrite Import to use the hook. + Document. +* Refactor __import__. + + + Create a greatest common denominator function for __import__/import_module + that takes in an absolute module name and performs the import. + + Use GCD import for __import__. + + Use GCD import for import_module. + * Implement PEP 302 protocol for loaders (should just be a matter of testing). + Built-in. @@ -21,7 +25,7 @@ to do + Extension. + Source/bytecode. -* Public API to expose (w/ docs!) +* Public API left to expose (w/ docs!) + abc @@ -33,6 +37,8 @@ to do * load_module + - (?) Importer(Finder, Loader) + - ResourceLoader(Loader) * get_data @@ -58,8 +64,6 @@ to do + machinery - (?) Chained path hook/finder - - BuiltinImporter - - FrozenImporter - (?) FileFinder - Extensions importers @@ -75,10 +79,8 @@ to do * OPTIMIZE! - + Fast path common cases. - - - Absolute name from sys.path. - - Relative name from sys.path. + + Fast path absolute name. + + Fast path pulling from sys.modules. * Bootstrap importlib as implementation of builtins.__import__ diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py index 6bace12..b4ae779 100644 --- a/Lib/importlib/test/import_/test_path.py +++ b/Lib/importlib/test/import_/test_path.py @@ -2,9 +2,10 @@ from importlib import machinery from .. import util from . import util as import_util from contextlib import nested -from imp import new_module +import imp import os import sys +from test import support from types import MethodType import unittest @@ -143,7 +144,7 @@ class __path__Tests(BaseTests): self.run_test(self.hooks_order_test, location, [location]) def test_path_argument(self): - module = new_module('pkg') + module = imp.new_module('pkg') module.__path__ = ['random __path__'] name = 'pkg.whatever' sys.modules['pkg'] = module @@ -221,8 +222,22 @@ class FinderTests(unittest.TestCase): def test_implicit_hooks(self): # Test that the implicit path hooks are used. - # TODO(brett.cannon) implement - pass + existing_path = os.path.dirname(support.TESTFN) + bad_path = '<path>' + module = '<module>' + assert not os.path.exists(bad_path) + with util.import_state(): + nothing = machinery.PathFinder.find_module(module, + path=[existing_path]) + self.assert_(nothing is None) + self.assert_(existing_path in sys.path_importer_cache) + self.assert_(not isinstance(sys.path_importer_cache[existing_path], + imp.NullImporter)) + nothing = machinery.PathFinder.find_module(module, path=[bad_path]) + self.assert_(nothing is None) + self.assert_(bad_path in sys.path_importer_cache) + self.assert_(isinstance(sys.path_importer_cache[bad_path], + imp.NullImporter)) def test_main(): |