|
1 import unittest |
|
2 from test.test_support import run_unittest |
|
3 import sys |
|
4 import warnings |
|
5 |
|
6 |
|
7 |
|
8 class AllTest(unittest.TestCase): |
|
9 |
|
10 def check_all(self, modname): |
|
11 names = {} |
|
12 with warnings.catch_warnings(): |
|
13 warnings.filterwarnings("ignore", ".* (module|package)", |
|
14 DeprecationWarning) |
|
15 try: |
|
16 exec "import %s" % modname in names |
|
17 except ImportError: |
|
18 # Silent fail here seems the best route since some modules |
|
19 # may not be available in all environments. |
|
20 return |
|
21 self.failUnless(hasattr(sys.modules[modname], "__all__"), |
|
22 "%s has no __all__ attribute" % modname) |
|
23 names = {} |
|
24 exec "from %s import *" % modname in names |
|
25 if "__builtins__" in names: |
|
26 del names["__builtins__"] |
|
27 keys = set(names) |
|
28 all = set(sys.modules[modname].__all__) |
|
29 self.assertEqual(keys, all) |
|
30 |
|
31 def test_all(self): |
|
32 if not sys.platform.startswith('java'): |
|
33 # In case _socket fails to build, make this test fail more gracefully |
|
34 # than an AttributeError somewhere deep in CGIHTTPServer. |
|
35 import _socket |
|
36 |
|
37 self.check_all("BaseHTTPServer") |
|
38 self.check_all("Bastion") |
|
39 self.check_all("CGIHTTPServer") |
|
40 self.check_all("ConfigParser") |
|
41 self.check_all("Cookie") |
|
42 self.check_all("MimeWriter") |
|
43 self.check_all("Queue") |
|
44 self.check_all("SimpleHTTPServer") |
|
45 self.check_all("SocketServer") |
|
46 self.check_all("StringIO") |
|
47 self.check_all("UserString") |
|
48 self.check_all("aifc") |
|
49 self.check_all("atexit") |
|
50 self.check_all("audiodev") |
|
51 self.check_all("base64") |
|
52 self.check_all("bdb") |
|
53 self.check_all("binhex") |
|
54 self.check_all("calendar") |
|
55 self.check_all("cgi") |
|
56 self.check_all("cmd") |
|
57 self.check_all("code") |
|
58 self.check_all("codecs") |
|
59 self.check_all("codeop") |
|
60 self.check_all("colorsys") |
|
61 self.check_all("commands") |
|
62 self.check_all("compileall") |
|
63 self.check_all("copy") |
|
64 self.check_all("copy_reg") |
|
65 self.check_all("csv") |
|
66 self.check_all("dbhash") |
|
67 self.check_all("decimal") |
|
68 self.check_all("difflib") |
|
69 self.check_all("dircache") |
|
70 self.check_all("dis") |
|
71 self.check_all("doctest") |
|
72 self.check_all("dummy_thread") |
|
73 self.check_all("dummy_threading") |
|
74 self.check_all("filecmp") |
|
75 self.check_all("fileinput") |
|
76 self.check_all("fnmatch") |
|
77 self.check_all("fpformat") |
|
78 self.check_all("ftplib") |
|
79 self.check_all("getopt") |
|
80 self.check_all("getpass") |
|
81 self.check_all("gettext") |
|
82 self.check_all("glob") |
|
83 self.check_all("gzip") |
|
84 self.check_all("heapq") |
|
85 self.check_all("htmllib") |
|
86 self.check_all("httplib") |
|
87 self.check_all("ihooks") |
|
88 self.check_all("imaplib") |
|
89 self.check_all("imghdr") |
|
90 self.check_all("imputil") |
|
91 self.check_all("keyword") |
|
92 self.check_all("linecache") |
|
93 self.check_all("locale") |
|
94 self.check_all("macpath") |
|
95 self.check_all("macurl2path") |
|
96 self.check_all("mailbox") |
|
97 self.check_all("mailcap") |
|
98 self.check_all("mhlib") |
|
99 self.check_all("mimetools") |
|
100 self.check_all("mimetypes") |
|
101 self.check_all("mimify") |
|
102 self.check_all("multifile") |
|
103 self.check_all("netrc") |
|
104 self.check_all("nntplib") |
|
105 self.check_all("ntpath") |
|
106 self.check_all("opcode") |
|
107 self.check_all("optparse") |
|
108 self.check_all("os") |
|
109 self.check_all("os2emxpath") |
|
110 self.check_all("pdb") |
|
111 self.check_all("pickle") |
|
112 self.check_all("pickletools") |
|
113 self.check_all("pipes") |
|
114 self.check_all("popen2") |
|
115 self.check_all("poplib") |
|
116 self.check_all("posixpath") |
|
117 self.check_all("pprint") |
|
118 self.check_all("profile") |
|
119 self.check_all("pstats") |
|
120 self.check_all("pty") |
|
121 self.check_all("py_compile") |
|
122 self.check_all("pyclbr") |
|
123 self.check_all("quopri") |
|
124 self.check_all("random") |
|
125 self.check_all("re") |
|
126 self.check_all("repr") |
|
127 self.check_all("rexec") |
|
128 self.check_all("rfc822") |
|
129 self.check_all("rlcompleter") |
|
130 self.check_all("robotparser") |
|
131 self.check_all("sched") |
|
132 self.check_all("sets") |
|
133 self.check_all("sgmllib") |
|
134 self.check_all("shelve") |
|
135 self.check_all("shlex") |
|
136 self.check_all("shutil") |
|
137 self.check_all("smtpd") |
|
138 self.check_all("smtplib") |
|
139 self.check_all("sndhdr") |
|
140 self.check_all("socket") |
|
141 self.check_all("_strptime") |
|
142 self.check_all("symtable") |
|
143 self.check_all("tabnanny") |
|
144 self.check_all("tarfile") |
|
145 self.check_all("telnetlib") |
|
146 self.check_all("tempfile") |
|
147 self.check_all("test.test_support") |
|
148 self.check_all("textwrap") |
|
149 self.check_all("threading") |
|
150 self.check_all("timeit") |
|
151 self.check_all("toaiff") |
|
152 self.check_all("tokenize") |
|
153 self.check_all("traceback") |
|
154 self.check_all("tty") |
|
155 self.check_all("unittest") |
|
156 self.check_all("urllib") |
|
157 self.check_all("urlparse") |
|
158 self.check_all("uu") |
|
159 self.check_all("warnings") |
|
160 self.check_all("wave") |
|
161 self.check_all("weakref") |
|
162 self.check_all("webbrowser") |
|
163 self.check_all("xdrlib") |
|
164 self.check_all("zipfile") |
|
165 |
|
166 # rlcompleter needs special consideration; it import readline which |
|
167 # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-( |
|
168 try: |
|
169 self.check_all("rlcompleter") |
|
170 finally: |
|
171 try: |
|
172 import locale |
|
173 except ImportError: |
|
174 pass |
|
175 else: |
|
176 locale.setlocale(locale.LC_CTYPE, 'C') |
|
177 |
|
178 |
|
179 def test_main(): |
|
180 run_unittest(AllTest) |
|
181 |
|
182 if __name__ == "__main__": |
|
183 test_main() |