diff options
author | darylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-04-16 22:12:42 +0000 |
---|---|---|
committer | darylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-04-16 22:12:42 +0000 |
commit | 4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2 (patch) | |
tree | 2d17d2388a78082e32f6a97120d707328143543b /AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py | |
parent | cbc6b5e54599c7391ece99ad3c5313f4dd4ddda6 (diff) | |
download | edk2-platforms-4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2.tar.xz |
AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site.
These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution.
Signed-off-by: daryl.mcdaniel@intel.com
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py')
-rw-r--r-- | AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py new file mode 100644 index 0000000000..6470283592 --- /dev/null +++ b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py @@ -0,0 +1,286 @@ +import __future__
+import os
+import unittest
+import distutils.dir_util
+import tempfile
+
+from test import test_support
+
+try: set
+except NameError: from sets import Set as set
+
+import modulefinder
+
+# Note: To test modulefinder with Python 2.2, sets.py and
+# modulefinder.py must be available - they are not in the standard
+# library.
+
+TEST_DIR = tempfile.mkdtemp()
+TEST_PATH = [TEST_DIR, os.path.dirname(__future__.__file__)]
+
+# Each test description is a list of 5 items:
+#
+# 1. a module name that will be imported by modulefinder
+# 2. a list of module names that modulefinder is required to find
+# 3. a list of module names that modulefinder should complain
+# about because they are not found
+# 4. a list of module names that modulefinder should complain
+# about because they MAY be not found
+# 5. a string specifying packages to create; the format is obvious imo.
+#
+# Each package will be created in TEST_DIR, and TEST_DIR will be
+# removed after the tests again.
+# Modulefinder searches in a path that contains TEST_DIR, plus
+# the standard Lib directory.
+
+maybe_test = [
+ "a.module",
+ ["a", "a.module", "sys",
+ "b"],
+ ["c"], ["b.something"],
+ """\
+a/__init__.py
+a/module.py
+ from b import something
+ from c import something
+b/__init__.py
+ from sys import *
+"""]
+
+maybe_test_new = [
+ "a.module",
+ ["a", "a.module", "sys",
+ "b", "__future__"],
+ ["c"], ["b.something"],
+ """\
+a/__init__.py
+a/module.py
+ from b import something
+ from c import something
+b/__init__.py
+ from __future__ import absolute_import
+ from sys import *
+"""]
+
+package_test = [
+ "a.module",
+ ["a", "a.b", "a.c", "a.module", "mymodule", "sys"],
+ ["blahblah"], [],
+ """\
+mymodule.py
+a/__init__.py
+ import blahblah
+ from a import b
+ import c
+a/module.py
+ import sys
+ from a import b as x
+ from a.c import sillyname
+a/b.py
+a/c.py
+ from a.module import x
+ import mymodule as sillyname
+ from sys import version_info
+"""]
+
+absolute_import_test = [
+ "a.module",
+ ["a", "a.module",
+ "b", "b.x", "b.y", "b.z",
+ "__future__", "sys", "exceptions"],
+ ["blahblah"], [],
+ """\
+mymodule.py
+a/__init__.py
+a/module.py
+ from __future__ import absolute_import
+ import sys # sys
+ import blahblah # fails
+ import exceptions # exceptions
+ import b.x # b.x
+ from b import y # b.y
+ from b.z import * # b.z.*
+a/exceptions.py
+a/sys.py
+ import mymodule
+a/b/__init__.py
+a/b/x.py
+a/b/y.py
+a/b/z.py
+b/__init__.py
+ import z
+b/unused.py
+b/x.py
+b/y.py
+b/z.py
+"""]
+
+relative_import_test = [
+ "a.module",
+ ["__future__",
+ "a", "a.module",
+ "a.b", "a.b.y", "a.b.z",
+ "a.b.c", "a.b.c.moduleC",
+ "a.b.c.d", "a.b.c.e",
+ "a.b.x",
+ "exceptions"],
+ [], [],
+ """\
+mymodule.py
+a/__init__.py
+ from .b import y, z # a.b.y, a.b.z
+a/module.py
+ from __future__ import absolute_import # __future__
+ import exceptions # exceptions
+a/exceptions.py
+a/sys.py
+a/b/__init__.py
+ from ..b import x # a.b.x
+ #from a.b.c import moduleC
+ from .c import moduleC # a.b.moduleC
+a/b/x.py
+a/b/y.py
+a/b/z.py
+a/b/g.py
+a/b/c/__init__.py
+ from ..c import e # a.b.c.e
+a/b/c/moduleC.py
+ from ..c import d # a.b.c.d
+a/b/c/d.py
+a/b/c/e.py
+a/b/c/x.py
+"""]
+
+relative_import_test_2 = [
+ "a.module",
+ ["a", "a.module",
+ "a.sys",
+ "a.b", "a.b.y", "a.b.z",
+ "a.b.c", "a.b.c.d",
+ "a.b.c.e",
+ "a.b.c.moduleC",
+ "a.b.c.f",
+ "a.b.x",
+ "a.another"],
+ [], [],
+ """\
+mymodule.py
+a/__init__.py
+ from . import sys # a.sys
+a/another.py
+a/module.py
+ from .b import y, z # a.b.y, a.b.z
+a/exceptions.py
+a/sys.py
+a/b/__init__.py
+ from .c import moduleC # a.b.c.moduleC
+ from .c import d # a.b.c.d
+a/b/x.py
+a/b/y.py
+a/b/z.py
+a/b/c/__init__.py
+ from . import e # a.b.c.e
+a/b/c/moduleC.py
+ #
+ from . import f # a.b.c.f
+ from .. import x # a.b.x
+ from ... import another # a.another
+a/b/c/d.py
+a/b/c/e.py
+a/b/c/f.py
+"""]
+
+relative_import_test_3 = [
+ "a.module",
+ ["a", "a.module"],
+ ["a.bar"],
+ [],
+ """\
+a/__init__.py
+ def foo(): pass
+a/module.py
+ from . import foo
+ from . import bar
+"""]
+
+def open_file(path):
+ ##print "#", os.path.abspath(path)
+ dirname = os.path.dirname(path)
+ distutils.dir_util.mkpath(dirname)
+ return open(path, "w")
+
+def create_package(source):
+ ofi = None
+ try:
+ for line in source.splitlines():
+ if line.startswith(" ") or line.startswith("\t"):
+ ofi.write(line.strip() + "\n")
+ else:
+ if ofi:
+ ofi.close()
+ ofi = open_file(os.path.join(TEST_DIR, line.strip()))
+ finally:
+ if ofi:
+ ofi.close()
+
+class ModuleFinderTest(unittest.TestCase):
+ def _do_test(self, info, report=False):
+ import_this, modules, missing, maybe_missing, source = info
+ create_package(source)
+ try:
+ mf = modulefinder.ModuleFinder(path=TEST_PATH)
+ mf.import_hook(import_this)
+ if report:
+ mf.report()
+## # This wouldn't work in general when executed several times:
+## opath = sys.path[:]
+## sys.path = TEST_PATH
+## try:
+## __import__(import_this)
+## except:
+## import traceback; traceback.print_exc()
+## sys.path = opath
+## return
+ modules = set(modules)
+ found = set(mf.modules.keys())
+ more = list(found - modules)
+ less = list(modules - found)
+ # check if we found what we expected, not more, not less
+ self.assertEqual((more, less), ([], []))
+
+ # check for missing and maybe missing modules
+ bad, maybe = mf.any_missing_maybe()
+ self.assertEqual(bad, missing)
+ self.assertEqual(maybe, maybe_missing)
+ finally:
+ distutils.dir_util.remove_tree(TEST_DIR)
+
+ def test_package(self):
+ self._do_test(package_test)
+
+ def test_maybe(self):
+ self._do_test(maybe_test)
+
+ if getattr(__future__, "absolute_import", None):
+
+ def test_maybe_new(self):
+ self._do_test(maybe_test_new)
+
+ def test_absolute_imports(self):
+ self._do_test(absolute_import_test)
+
+ def test_relative_imports(self):
+ self._do_test(relative_import_test)
+
+ def test_relative_imports_2(self):
+ self._do_test(relative_import_test_2)
+
+ def test_relative_imports_3(self):
+ self._do_test(relative_import_test_3)
+
+def test_main():
+ distutils.log.set_threshold(distutils.log.WARN)
+ test_support.run_unittest(ModuleFinderTest)
+
+if __name__ == "__main__":
+ unittest.main()
|