annotate Lib/test/test_modulefinder.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents fea8f21b199d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
1 import __future__
45468
1d84bf5f9478 Patch #2167 from calvin: Remove unused imports
Christian Heimes <christian@cheimes.de>
parents: 40236
diff changeset
2 import os
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
3 import unittest
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
4 import distutils.dir_util
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
5 import tempfile
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
6
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
7 from test import test_support
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
8
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
9 try: set
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
10 except NameError: from sets import Set as set
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
11
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
12 import modulefinder
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
13
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
14 # Note: To test modulefinder with Python 2.2, sets.py and
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
15 # modulefinder.py must be available - they are not in the standard
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
16 # library.
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
17
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
18 TEST_DIR = tempfile.mkdtemp()
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
19 TEST_PATH = [TEST_DIR, os.path.dirname(__future__.__file__)]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
20
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
21 # Each test description is a list of 5 items:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
22 #
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
23 # 1. a module name that will be imported by modulefinder
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
24 # 2. a list of module names that modulefinder is required to find
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
25 # 3. a list of module names that modulefinder should complain
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
26 # about because they are not found
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
27 # 4. a list of module names that modulefinder should complain
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
28 # about because they MAY be not found
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
29 # 5. a string specifying packages to create; the format is obvious imo.
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
30 #
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
31 # Each package will be created in TEST_DIR, and TEST_DIR will be
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
32 # removed after the tests again.
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
33 # Modulefinder searches in a path that contains TEST_DIR, plus
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
34 # the standard Lib directory.
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
35
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
36 maybe_test = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
37 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
38 ["a", "a.module", "sys",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
39 "b"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
40 ["c"], ["b.something"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
41 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
42 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
43 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
44 from b import something
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
45 from c import something
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
46 b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
47 from sys import *
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
48 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
49
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
50 maybe_test_new = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
51 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
52 ["a", "a.module", "sys",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
53 "b", "__future__"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
54 ["c"], ["b.something"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
55 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
56 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
57 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
58 from b import something
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
59 from c import something
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
60 b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
61 from __future__ import absolute_import
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
62 from sys import *
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
63 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
64
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
65 package_test = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
66 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
67 ["a", "a.b", "a.c", "a.module", "mymodule", "sys"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
68 ["blahblah"], [],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
69 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
70 mymodule.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
71 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
72 import blahblah
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
73 from a import b
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
74 import c
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
75 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
76 import sys
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
77 from a import b as x
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
78 from a.c import sillyname
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
79 a/b.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
80 a/c.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
81 from a.module import x
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
82 import mymodule as sillyname
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
83 from sys import version_info
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
84 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
85
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
86 absolute_import_test = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
87 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
88 ["a", "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
89 "b", "b.x", "b.y", "b.z",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
90 "__future__", "sys", "exceptions"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
91 ["blahblah"], [],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
92 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
93 mymodule.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
94 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
95 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
96 from __future__ import absolute_import
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
97 import sys # sys
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
98 import blahblah # fails
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
99 import exceptions # exceptions
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
100 import b.x # b.x
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
101 from b import y # b.y
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
102 from b.z import * # b.z.*
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
103 a/exceptions.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
104 a/sys.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
105 import mymodule
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
106 a/b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
107 a/b/x.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
108 a/b/y.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
109 a/b/z.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
110 b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
111 import z
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
112 b/unused.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
113 b/x.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
114 b/y.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
115 b/z.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
116 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
117
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
118 relative_import_test = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
119 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
120 ["__future__",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
121 "a", "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
122 "a.b", "a.b.y", "a.b.z",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
123 "a.b.c", "a.b.c.moduleC",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
124 "a.b.c.d", "a.b.c.e",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
125 "a.b.x",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
126 "exceptions"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
127 [], [],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
128 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
129 mymodule.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
130 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
131 from .b import y, z # a.b.y, a.b.z
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
132 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
133 from __future__ import absolute_import # __future__
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
134 import exceptions # exceptions
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
135 a/exceptions.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
136 a/sys.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
137 a/b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
138 from ..b import x # a.b.x
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
139 #from a.b.c import moduleC
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
140 from .c import moduleC # a.b.moduleC
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
141 a/b/x.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
142 a/b/y.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
143 a/b/z.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
144 a/b/g.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
145 a/b/c/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
146 from ..c import e # a.b.c.e
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
147 a/b/c/moduleC.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
148 from ..c import d # a.b.c.d
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
149 a/b/c/d.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
150 a/b/c/e.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
151 a/b/c/x.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
152 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
153
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
154 relative_import_test_2 = [
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
155 "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
156 ["a", "a.module",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
157 "a.sys",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
158 "a.b", "a.b.y", "a.b.z",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
159 "a.b.c", "a.b.c.d",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
160 "a.b.c.e",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
161 "a.b.c.moduleC",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
162 "a.b.c.f",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
163 "a.b.x",
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
164 "a.another"],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
165 [], [],
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
166 """\
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
167 mymodule.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
168 a/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
169 from . import sys # a.sys
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
170 a/another.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
171 a/module.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
172 from .b import y, z # a.b.y, a.b.z
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
173 a/exceptions.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
174 a/sys.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
175 a/b/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
176 from .c import moduleC # a.b.c.moduleC
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
177 from .c import d # a.b.c.d
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
178 a/b/x.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
179 a/b/y.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
180 a/b/z.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
181 a/b/c/__init__.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
182 from . import e # a.b.c.e
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
183 a/b/c/moduleC.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
184 #
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
185 from . import f # a.b.c.f
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
186 from .. import x # a.b.x
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
187 from ... import another # a.another
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
188 a/b/c/d.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
189 a/b/c/e.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
190 a/b/c/f.py
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
191 """]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
192
49603
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
193 relative_import_test_3 = [
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
194 "a.module",
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
195 ["a", "a.module"],
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
196 ["a.bar"],
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
197 [],
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
198 """\
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
199 a/__init__.py
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
200 def foo(): pass
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
201 a/module.py
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
202 from . import foo
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
203 from . import bar
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
204 """]
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
205
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
206 def open_file(path):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
207 ##print "#", os.path.abspath(path)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
208 dirname = os.path.dirname(path)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
209 distutils.dir_util.mkpath(dirname)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
210 return open(path, "w")
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
212 def create_package(source):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
213 ofi = None
65339
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
214 try:
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
215 for line in source.splitlines():
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
216 if line.startswith(" ") or line.startswith("\t"):
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
217 ofi.write(line.strip() + "\n")
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
218 else:
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
219 if ofi:
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
220 ofi.close()
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
221 ofi = open_file(os.path.join(TEST_DIR, line.strip()))
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
222 finally:
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
223 if ofi:
fea8f21b199d Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55002
diff changeset
224 ofi.close()
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
225
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
226 class ModuleFinderTest(unittest.TestCase):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
227 def _do_test(self, info, report=False):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
228 import_this, modules, missing, maybe_missing, source = info
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
229 create_package(source)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
230 try:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
231 mf = modulefinder.ModuleFinder(path=TEST_PATH)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
232 mf.import_hook(import_this)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
233 if report:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
234 mf.report()
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
235 ## # This wouldn't work in general when executed several times:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
236 ## opath = sys.path[:]
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
237 ## sys.path = TEST_PATH
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
238 ## try:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
239 ## __import__(import_this)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
240 ## except:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
241 ## import traceback; traceback.print_exc()
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
242 ## sys.path = opath
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
243 ## return
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
244 modules = set(modules)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
245 found = set(mf.modules.keys())
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
246 more = list(found - modules)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
247 less = list(modules - found)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
248 # check if we found what we expected, not more, not less
55002
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 49603
diff changeset
249 self.assertEqual((more, less), ([], []))
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
250
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
251 # check for missing and maybe missing modules
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
252 bad, maybe = mf.any_missing_maybe()
55002
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 49603
diff changeset
253 self.assertEqual(bad, missing)
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 49603
diff changeset
254 self.assertEqual(maybe, maybe_missing)
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
255 finally:
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
256 distutils.dir_util.remove_tree(TEST_DIR)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
257
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
258 def test_package(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
259 self._do_test(package_test)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
260
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
261 def test_maybe(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
262 self._do_test(maybe_test)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
263
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
264 if getattr(__future__, "absolute_import", None):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
265
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
266 def test_maybe_new(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
267 self._do_test(maybe_test_new)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
268
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
269 def test_absolute_imports(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
270 self._do_test(absolute_import_test)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
271
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
272 def test_relative_imports(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
273 self._do_test(relative_import_test)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
274
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
275 def test_relative_imports_2(self):
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
276 self._do_test(relative_import_test_2)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
277
49603
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
278 def test_relative_imports_3(self):
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
279 self._do_test(relative_import_test_3)
3485d95957c1 Merged revisions 67046 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 45468
diff changeset
280
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
281 def test_main():
40236
de261f763b4c Fix test_modulefinder so it doesn't fail when run after test_distutils.
Neal Norwitz <nnorwitz@gmail.com>
parents: 40211
diff changeset
282 distutils.log.set_threshold(distutils.log.WARN)
40211
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
283 test_support.run_unittest(ModuleFinderTest)
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
284
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
285 if __name__ == "__main__":
43a826467ad3 Modulefinder now handles absolute and relative imports, including
Thomas Heller <theller@ctypes.org>
parents:
diff changeset
286 unittest.main()