[Python-checkins] r69283 - python/branches/py3k/Lib/importlib/test/import_/test_path.py

brett.cannon python-checkins at python.org
Thu Feb 5 03:53:23 CET 2009


Author: brett.cannon
Date: Thu Feb  5 03:53:23 2009
New Revision: 69283

Log:
Begin writing tests for importlib.machinery.PathFinder.


Modified:
   python/branches/py3k/Lib/importlib/test/import_/test_path.py

Modified: python/branches/py3k/Lib/importlib/test/import_/test_path.py
==============================================================================
--- python/branches/py3k/Lib/importlib/test/import_/test_path.py	(original)
+++ python/branches/py3k/Lib/importlib/test/import_/test_path.py	Thu Feb  5 03:53:23 2009
@@ -1,3 +1,4 @@
+from importlib import machinery
 from .. import util
 from . import util as import_util
 from contextlib import nested
@@ -149,9 +150,64 @@
             self.path_argument_test(name)
 
 
+class FinderTests(unittest.TestCase):
+
+    """Tests for SysPathImporter."""
+
+    def test_failure(self):
+        # Test None returned upon not finding a suitable finder.
+        def mock_implicit_hooks():
+            return []
+        # XXX Not blackbox.
+        original_hooks = machinery.PathFinder._implicit_hooks
+        machinery.PathFinder._implicit_hooks = staticmethod(mock_implicit_hooks)
+        try:
+            with util.import_state():
+                self.assert_(machinery.PathFinder.find_module('XXX') is None)
+        finally:
+            machinery.PathFinder._implicit_hooks = original_hooks
+
+    def test_sys_path(self):
+        # Test that sys.path is used when 'path' is None.
+        # Implicitly tests that sys.path_importer_cache is used.
+        module = '<test module>'
+        path = '<test path>'
+        importer = util.mock_modules(module)
+        with util.import_state(path_importer_cache={path: importer},
+                               path=[path]):
+            loader = machinery.PathFinder.find_module(module)
+            self.assert_(loader is importer)
+
+    def test_path(self):
+        # Test that 'path' is used when set.
+        # Implicitly tests that sys.path_importer_cache is used.
+        module = '<test module>'
+        path = '<test path>'
+        importer = util.mock_modules(module)
+        with util.import_state(path_importer_cache={path: importer}):
+            loader = machinery.PathFinder.find_module(module, [path])
+            self.assert_(loader is importer)
+
+    def test_path_importer_cache_has_None(self):
+        # Test that the default hook is used when sys.path_importer_cache
+        # contains None for a path.
+        # TODO(brett.cannon) implement
+        pass
+
+    def test_path_hooks(self):
+        # Test that sys.path_hooks is used.
+        # TODO(brett.cannon) implement
+        pass
+
+    def test_implicit_hooks(self):
+        # Test that the implicit path hooks are used.
+        # TODO(brett.cannon) implement
+        pass
+
+
 def test_main():
     from test.support import run_unittest
-    run_unittest(PathTests, __path__Tests)
+    run_unittest(PathTests, __path__Tests, FinderTests)
 
 if __name__ == '__main__':
     test_main()


More information about the Python-checkins mailing list