Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / lib / python2.4 / test / test_pkg.py
CommitLineData
86530b38
AT
1# Test packages (dotted-name import)
2
3import sys, os, tempfile, traceback
4from os import mkdir, rmdir, extsep # Can't test if these fail
5del mkdir, rmdir
6from test.test_support import verify, verbose, TestFailed
7
8# Helpers to create and destroy hierarchies.
9
10def mkhier(root, descr):
11 if not os.path.isdir(root):
12 mkdir(root)
13 for name, contents in descr:
14 comps = name.split()
15 fullname = root
16 for c in comps:
17 fullname = os.path.join(fullname, c)
18 if contents is None:
19 mkdir(fullname)
20 else:
21 if verbose: print "write", fullname
22 f = open(fullname, "w")
23 f.write(contents)
24 if contents and contents[-1] != '\n':
25 f.write('\n')
26 f.close()
27
28def mkdir(x):
29 if verbose: print "mkdir", x
30 os.mkdir(x)
31
32def cleanout(root):
33 names = os.listdir(root)
34 for name in names:
35 fullname = os.path.join(root, name)
36 if os.path.isdir(fullname) and not os.path.islink(fullname):
37 cleanout(fullname)
38 else:
39 os.remove(fullname)
40 rmdir(root)
41
42def rmdir(x):
43 if verbose: print "rmdir", x
44 os.rmdir(x)
45
46def fixdir(lst):
47 try:
48 lst.remove('__builtins__')
49 except ValueError:
50 pass
51 return lst
52
53# Helper to run a test
54
55def runtest(hier, code):
56 root = tempfile.mkdtemp()
57 mkhier(root, hier)
58 savepath = sys.path[:]
59 fd, fname = tempfile.mkstemp(text=True)
60 os.write(fd, code)
61 os.close(fd)
62 try:
63 sys.path.insert(0, root)
64 if verbose: print "sys.path =", sys.path
65 try:
66 execfile(fname, globals(), {})
67 except:
68 traceback.print_exc(file=sys.stdout)
69 finally:
70 sys.path[:] = savepath
71 os.unlink(fname)
72 try:
73 cleanout(root)
74 except (os.error, IOError):
75 pass
76
77# Test descriptions
78
79tests = [
80 ("t1", [("t1", None), ("t1 __init__"+os.extsep+"py", "")], "import t1"),
81
82 ("t2", [
83 ("t2", None),
84 ("t2 __init__"+os.extsep+"py", "'doc for t2'; print __name__, 'loading'"),
85 ("t2 sub", None),
86 ("t2 sub __init__"+os.extsep+"py", ""),
87 ("t2 sub subsub", None),
88 ("t2 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
89 ],
90"""
91import t2
92print t2.__doc__
93import t2.sub
94import t2.sub.subsub
95print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__
96import t2
97from t2 import *
98print dir()
99from t2 import sub
100from t2.sub import subsub
101from t2.sub.subsub import spam
102print sub.__name__, subsub.__name__
103print sub.subsub.__name__
104print dir()
105import t2.sub
106import t2.sub.subsub
107print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__
108from t2 import *
109print dir()
110"""),
111
112 ("t3", [
113 ("t3", None),
114 ("t3 __init__"+os.extsep+"py", "print __name__, 'loading'"),
115 ("t3 sub", None),
116 ("t3 sub __init__"+os.extsep+"py", ""),
117 ("t3 sub subsub", None),
118 ("t3 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
119 ],
120"""
121import t3.sub.subsub
122print t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__
123reload(t3)
124reload(t3.sub)
125reload(t3.sub.subsub)
126"""),
127
128 ("t4", [
129 ("t4"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (t4"+os.extsep+"py)'"),
130 ("t4", None),
131 ("t4 __init__"+os.extsep+"py", "print __name__, 'loading'"),
132 ("t4 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"),
133 ("t4 sub", None),
134 ("t4 sub __init__"+os.extsep+"py", ""),
135 ("t4 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"),
136 ("t4 sub subsub", None),
137 ("t4 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
138 ],
139"""
140from t4.sub.subsub import *
141print "t4.sub.subsub.spam =", spam
142"""),
143
144 ("t5", [
145 ("t5", None),
146 ("t5 __init__"+os.extsep+"py", "import t5.foo"),
147 ("t5 string"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
148 ("t5 foo"+os.extsep+"py",
149 "print __name__, 'loading'; import string; print string.spam"),
150 ],
151"""
152import t5
153from t5 import *
154print dir()
155import t5
156print fixdir(dir(t5))
157print fixdir(dir(t5.foo))
158print fixdir(dir(t5.string))
159"""),
160
161 ("t6", [
162 ("t6", None),
163 ("t6 __init__"+os.extsep+"py", "__all__ = ['spam', 'ham', 'eggs']"),
164 ("t6 spam"+os.extsep+"py", "print __name__, 'loading'"),
165 ("t6 ham"+os.extsep+"py", "print __name__, 'loading'"),
166 ("t6 eggs"+os.extsep+"py", "print __name__, 'loading'"),
167 ],
168"""
169import t6
170print fixdir(dir(t6))
171from t6 import *
172print fixdir(dir(t6))
173print dir()
174"""),
175
176 ("t7", [
177 ("t7"+os.extsep+"py", "print 'Importing t7"+os.extsep+"py'"),
178 ("t7", None),
179 ("t7 __init__"+os.extsep+"py", "print __name__, 'loading'"),
180 ("t7 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"),
181 ("t7 sub", None),
182 ("t7 sub __init__"+os.extsep+"py", ""),
183 ("t7 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"),
184 ("t7 sub subsub", None),
185 ("t7 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
186 ],
187"""
188t7, sub, subsub = None, None, None
189import t7 as tas
190print fixdir(dir(tas))
191verify(not t7)
192from t7 import sub as subpar
193print fixdir(dir(subpar))
194verify(not t7 and not sub)
195from t7.sub import subsub as subsubsub
196print fixdir(dir(subsubsub))
197verify(not t7 and not sub and not subsub)
198from t7.sub.subsub import spam as ham
199print "t7.sub.subsub.spam =", ham
200verify(not t7 and not sub and not subsub)
201"""),
202
203]
204
205nontests = [
206 ("x5", [], ("import a" + ".a"*400)),
207 ("x6", [], ("import a" + ".a"*499)),
208 ("x7", [], ("import a" + ".a"*500)),
209 ("x8", [], ("import a" + ".a"*1100)),
210 ("x9", [], ("import " + "a"*400)),
211 ("x10", [], ("import " + "a"*500)),
212 ("x11", [], ("import " + "a"*998)),
213 ("x12", [], ("import " + "a"*999)),
214 ("x13", [], ("import " + "a"*999)),
215 ("x14", [], ("import " + "a"*2000)),
216]
217
218"""XXX Things to test
219
220import package without __init__
221import package with __init__
222__init__ importing submodule
223__init__ importing global module
224__init__ defining variables
225submodule importing other submodule
226submodule importing global module
227submodule import submodule via global name
228from package import submodule
229from package import subpackage
230from package import variable (defined in __init__)
231from package import * (defined in __init__)
232"""
233
234# Run the tests
235
236args = []
237if __name__ == '__main__':
238 args = sys.argv[1:]
239 if args and args[0] == '-q':
240 verbose = 0
241 del args[0]
242
243for name, hier, code in tests:
244 if args and name not in args:
245 print "skipping test", name
246 continue
247 print "running test", name
248 runtest(hier, code)
249
250# Test
251import sys
252import imp
253try:
254 import sys.imp
255except ImportError:
256 # This is what we expect
257 pass
258else:
259 raise TestFailed, "No ImportError exception on 'import sys.imp'"