summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/test/frozen
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2009-01-18 00:24:28 (GMT)
committerBrett Cannon <bcannon@gmail.com>2009-01-18 00:24:28 (GMT)
commit23cbd8a6564df0ac3df339f91196c45f3e626d32 (patch)
treebef5602638a1567c28738aa359dae9865e04b6cd /Lib/importlib/test/frozen
parent458ad47a2c8045080a86eaaf33bb6cd174021891 (diff)
downloadcpython-23cbd8a6564df0ac3df339f91196c45f3e626d32.zip
cpython-23cbd8a6564df0ac3df339f91196c45f3e626d32.tar.gz
cpython-23cbd8a6564df0ac3df339f91196c45f3e626d32.tar.bz2
Add initial implementation of importlib. See the NOTES files for what is
planned for the package. There are no docs yet, but they are coming once the API for the first new function, importlib.import_module() is finalized.
Diffstat (limited to 'Lib/importlib/test/frozen')
-rw-r--r--Lib/importlib/test/frozen/__init__.py13
-rw-r--r--Lib/importlib/test/frozen/support.py24
-rw-r--r--Lib/importlib/test/frozen/test_finder.py44
-rw-r--r--Lib/importlib/test/frozen/test_loader.py27
4 files changed, 108 insertions, 0 deletions
diff --git a/Lib/importlib/test/frozen/__init__.py b/Lib/importlib/test/frozen/__init__.py
new file mode 100644
index 0000000..2945eeb
--- /dev/null
+++ b/Lib/importlib/test/frozen/__init__.py
@@ -0,0 +1,13 @@
+import importlib.test
+import os.path
+import unittest
+
+
+def test_suite():
+ directory = os.path.dirname(__file__)
+ return importlib.test.test_suite('importlib.test.frozen', directory)
+
+
+if __name__ == '__main__':
+ from test.support import run_unittest
+ run_unittest(test_suite())
diff --git a/Lib/importlib/test/frozen/support.py b/Lib/importlib/test/frozen/support.py
new file mode 100644
index 0000000..e08b89e
--- /dev/null
+++ b/Lib/importlib/test/frozen/support.py
@@ -0,0 +1,24 @@
+import sys
+
+
+class Null:
+
+ """Just absorb what is given."""
+
+ def __getattr__(self):
+ return lambda *args, **kwargs: None
+
+
+class SilenceStdout:
+
+ """Silence sys.stdout."""
+
+ def setUp(self):
+ """Substitute sys.stdout with something that does not print to the
+ screen thanks to what bytecode is frozen."""
+ sys.stdout = Null()
+ super().setUp()
+
+ def tearDown(self):
+ sys.stdout = sys.__stdout__
+ super().tearDown()
diff --git a/Lib/importlib/test/frozen/test_finder.py b/Lib/importlib/test/frozen/test_finder.py
new file mode 100644
index 0000000..2541019
--- /dev/null
+++ b/Lib/importlib/test/frozen/test_finder.py
@@ -0,0 +1,44 @@
+import importlib
+from ..builtin import test_finder
+from .. import support
+
+import unittest
+
+
+class FinderTests(test_finder.FinderTests):
+
+ """Test finding frozen modules."""
+
+ def find(self, name, path=None):
+ finder = importlib.FrozenImporter()
+ return finder.find_module(name, path)
+
+
+ def test_module(self):
+ name = '__hello__'
+ loader = self.find(name)
+ self.assert_(hasattr(loader, 'load_module'))
+
+ def test_package(self):
+ loader = self.find('__phello__')
+ self.assert_(hasattr(loader, 'load_module'))
+
+ def test_module_in_package(self):
+ loader = self.find('__phello__.spam', ['__phello__'])
+ self.assert_(hasattr(loader, 'load_module'))
+
+ def test_package_in_package(self):
+ pass
+
+ def test_failure(self):
+ loader = self.find('<not real>')
+ self.assert_(loader is None)
+
+
+def test_main():
+ from test.support import run_unittest
+ run_unittest(FinderTests)
+
+
+if __name__ == '__main__':
+ test_main()
diff --git a/Lib/importlib/test/frozen/test_loader.py b/Lib/importlib/test/frozen/test_loader.py
new file mode 100644
index 0000000..b37ae7f
--- /dev/null
+++ b/Lib/importlib/test/frozen/test_loader.py
@@ -0,0 +1,27 @@
+import importlib
+from ..builtin import test_loader
+
+
+class LoaderTests(test_loader.LoaderTests):
+
+ name = '__phello__'
+ load_module = staticmethod(lambda name:
+ importlib.FrozenImporter().load_module(name))
+ verification = {'__name__': '__phello__', '__file__': '<frozen>',
+ '__package__': None, '__path__': ['__phello__']}
+
+
+class SubmoduleLoaderTests(LoaderTests):
+
+ name = '__phello__.spam'
+ verification = {'__name__': '__phello__.spam', '__file__': '<frozen>',
+ '__package__': None}
+
+
+def test_main():
+ from test.support import run_unittest
+ run_unittest(LoaderTests, SubmoduleLoaderTests)
+
+
+if __name__ == '__main__':
+ test_main()