blob: 6643a1984a1b896aadae6a1b981fbb2505ce0abc [file] [log] [blame]
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +00001import unittest
2from test import test_support
3
Barry Warsaw408b6d32002-07-30 23:27:12 +00004from test.test_support import verify, verbose
Raymond Hettinger91bbd9a2003-05-02 09:06:28 +00005from sets import Set
Skip Montanaroe99d5ea2001-01-20 19:54:20 +00006import sys
Tim Petersb05cd492002-04-11 20:04:12 +00007import warnings
8
Tim Petersd3925062002-04-16 01:27:44 +00009warnings.filterwarnings("ignore", ".* 'pre' .*", DeprecationWarning,
10 r'pre$')
11warnings.filterwarnings("ignore", ".* regsub .*", DeprecationWarning,
12 r'^regsub$')
13warnings.filterwarnings("ignore", ".* statcache .*", DeprecationWarning,
14 r'statcache$')
Skip Montanaroe99d5ea2001-01-20 19:54:20 +000015
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000016class AllTest(unittest.TestCase):
17
18 def check_all(self, modname):
19 names = {}
Tim Peters76c066b2001-02-12 03:27:31 +000020 try:
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000021 exec "import %s" % modname in names
22 except ImportError:
23 # Silent fail here seems the best route since some modules
24 # may not be available in all environments.
25 # Since an ImportError may leave a partial module object in
26 # sys.modules, get rid of that first. Here's what happens if
27 # you don't: importing pty fails on Windows because pty tries to
28 # import FCNTL, which doesn't exist. That raises an ImportError,
29 # caught here. It also leaves a partial pty module in sys.modules.
30 # So when test_pty is called later, the import of pty succeeds,
31 # but shouldn't. As a result, test_pty crashes with an
32 # AttributeError instead of an ImportError, and regrtest interprets
33 # the latter as a test failure (ImportError is treated as "test
34 # skipped" -- which is what test_pty should say on Windows).
35 try:
36 del sys.modules[modname]
37 except KeyError:
38 pass
39 return
40 verify(hasattr(sys.modules[modname], "__all__"),
41 "%s has no __all__ attribute" % modname)
42 names = {}
43 exec "from %s import *" % modname in names
44 if names.has_key("__builtins__"):
45 del names["__builtins__"]
Raymond Hettinger91bbd9a2003-05-02 09:06:28 +000046 keys = Set(names)
47 all = Set(sys.modules[modname].__all__)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000048 verify(keys==all, "%s != %s" % (keys, all))
Skip Montanaroe99d5ea2001-01-20 19:54:20 +000049
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000050 def test_all(self):
51 if not sys.platform.startswith('java'):
52 # In case _socket fails to build, make this test fail more gracefully
53 # than an AttributeError somewhere deep in CGIHTTPServer.
54 import _socket
Tim Petersab9ba272001-08-09 21:40:30 +000055
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000056 self.check_all("BaseHTTPServer")
Raymond Hettinger2e973c02003-05-02 09:36:07 +000057 self.check_all("Bastion")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000058 self.check_all("CGIHTTPServer")
59 self.check_all("ConfigParser")
60 self.check_all("Cookie")
61 self.check_all("MimeWriter")
Raymond Hettinger2d72b5d2003-09-16 04:37:39 +000062 self.check_all("Queue")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000063 self.check_all("SimpleHTTPServer")
64 self.check_all("SocketServer")
65 self.check_all("StringIO")
66 self.check_all("UserString")
67 self.check_all("aifc")
68 self.check_all("atexit")
69 self.check_all("audiodev")
70 self.check_all("base64")
71 self.check_all("bdb")
72 self.check_all("binhex")
73 self.check_all("calendar")
74 self.check_all("cgi")
75 self.check_all("cmd")
76 self.check_all("code")
77 self.check_all("codecs")
78 self.check_all("codeop")
79 self.check_all("colorsys")
80 self.check_all("commands")
81 self.check_all("compileall")
82 self.check_all("copy")
83 self.check_all("copy_reg")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +000084 self.check_all("csv")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000085 self.check_all("dbhash")
86 self.check_all("difflib")
87 self.check_all("dircache")
88 self.check_all("dis")
89 self.check_all("doctest")
90 self.check_all("dummy_thread")
91 self.check_all("dummy_threading")
92 self.check_all("filecmp")
93 self.check_all("fileinput")
94 self.check_all("fnmatch")
95 self.check_all("fpformat")
96 self.check_all("ftplib")
97 self.check_all("getopt")
98 self.check_all("getpass")
99 self.check_all("gettext")
100 self.check_all("glob")
101 self.check_all("gopherlib")
102 self.check_all("gzip")
103 self.check_all("heapq")
104 self.check_all("htmllib")
105 self.check_all("httplib")
106 self.check_all("ihooks")
107 self.check_all("imaplib")
108 self.check_all("imghdr")
109 self.check_all("imputil")
110 self.check_all("keyword")
111 self.check_all("linecache")
112 self.check_all("locale")
113 self.check_all("macpath")
114 self.check_all("macurl2path")
115 self.check_all("mailbox")
116 self.check_all("mailcap")
117 self.check_all("mhlib")
118 self.check_all("mimetools")
119 self.check_all("mimetypes")
120 self.check_all("mimify")
121 self.check_all("multifile")
122 self.check_all("netrc")
123 self.check_all("nntplib")
124 self.check_all("ntpath")
125 self.check_all("opcode")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +0000126 self.check_all("optparse")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000127 self.check_all("os")
128 self.check_all("os2emxpath")
129 self.check_all("pdb")
130 self.check_all("pickle")
131 self.check_all("pipes")
132 self.check_all("popen2")
133 self.check_all("poplib")
134 self.check_all("posixpath")
135 self.check_all("pprint")
136 self.check_all("pre") # deprecated
137 self.check_all("profile")
138 self.check_all("pstats")
139 self.check_all("pty")
140 self.check_all("py_compile")
141 self.check_all("pyclbr")
142 self.check_all("quopri")
143 self.check_all("random")
144 self.check_all("re")
145 self.check_all("reconvert")
146 self.check_all("regsub")
147 self.check_all("repr")
148 self.check_all("rexec")
149 self.check_all("rfc822")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000150 self.check_all("rlcompleter")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000151 self.check_all("robotparser")
152 self.check_all("sched")
153 self.check_all("sets")
154 self.check_all("sgmllib")
155 self.check_all("shelve")
156 self.check_all("shlex")
157 self.check_all("shutil")
158 self.check_all("smtpd")
159 self.check_all("smtplib")
160 self.check_all("sndhdr")
161 self.check_all("socket")
162 self.check_all("sre")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000163 self.check_all("_strptime")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000164 self.check_all("statcache")
165 self.check_all("symtable")
166 self.check_all("tabnanny")
167 self.check_all("tarfile")
168 self.check_all("telnetlib")
169 self.check_all("tempfile")
170 self.check_all("textwrap")
171 self.check_all("threading")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000172 self.check_all("timeit")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000173 self.check_all("toaiff")
174 self.check_all("tokenize")
175 self.check_all("traceback")
176 self.check_all("tty")
Raymond Hettinger2d72b5d2003-09-16 04:37:39 +0000177 self.check_all("unittest")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000178 self.check_all("urllib")
179 self.check_all("urlparse")
180 self.check_all("uu")
181 self.check_all("warnings")
182 self.check_all("wave")
183 self.check_all("weakref")
184 self.check_all("webbrowser")
185 self.check_all("xdrlib")
186 self.check_all("zipfile")
Guido van Rossum06e2a5e2002-10-09 18:17:06 +0000187
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000188 # rlcompleter needs special consideration; it import readline which
189 # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
190 try:
191 self.check_all("rlcompleter")
192 finally:
193 try:
194 import locale
195 except ImportError:
196 pass
197 else:
198 locale.setlocale(locale.LC_CTYPE, 'C')
199
200
201def test_main():
Walter Dörwald21d3a322003-05-01 17:45:56 +0000202 test_support.run_unittest(AllTest)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000203
204if __name__ == "__main__":
205 test_main()