blob: 600373340a50130c0fd62ebd5122cd7cdc4567a1 [file] [log] [blame]
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +00001import unittest
Guido van Rossumd8faa362007-04-27 19:54:29 +00002from test.test_support import verbose, run_unittest
Skip Montanaroe99d5ea2001-01-20 19:54:20 +00003import sys
Tim Petersb05cd492002-04-11 20:04:12 +00004import warnings
5
Tim Peterse2c9a6c2006-02-18 04:14:16 +00006warnings.filterwarnings("ignore",
7 "the gopherlib module is deprecated",
8 DeprecationWarning,
9 "<string>")
Skip Montanaroe99d5ea2001-01-20 19:54:20 +000010
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000011class AllTest(unittest.TestCase):
12
13 def check_all(self, modname):
14 names = {}
Tim Peters76c066b2001-02-12 03:27:31 +000015 try:
Georg Brandl7cae87c2006-09-06 06:51:57 +000016 exec("import %s" % modname, names)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000017 except ImportError:
18 # Silent fail here seems the best route since some modules
19 # may not be available in all environments.
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000020 return
Guido van Rossumd8faa362007-04-27 19:54:29 +000021 self.failUnless(hasattr(sys.modules[modname], "__all__"),
22 "%s has no __all__ attribute" % modname)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000023 names = {}
Georg Brandl7cae87c2006-09-06 06:51:57 +000024 exec("from %s import *" % modname, names)
Guido van Rossume2b70bc2006-08-18 22:13:04 +000025 if "__builtins__" in names:
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000026 del names["__builtins__"]
Raymond Hettingera690a992003-11-16 16:17:49 +000027 keys = set(names)
28 all = set(sys.modules[modname].__all__)
Guido van Rossumd8faa362007-04-27 19:54:29 +000029 self.assertEqual(keys, all)
Skip Montanaroe99d5ea2001-01-20 19:54:20 +000030
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000031 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
Tim Petersab9ba272001-08-09 21:40:30 +000036
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000037 self.check_all("BaseHTTPServer")
Raymond Hettinger2e973c02003-05-02 09:36:07 +000038 self.check_all("Bastion")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000039 self.check_all("CGIHTTPServer")
40 self.check_all("ConfigParser")
41 self.check_all("Cookie")
42 self.check_all("MimeWriter")
Raymond Hettinger2d72b5d2003-09-16 04:37:39 +000043 self.check_all("Queue")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000044 self.check_all("SimpleHTTPServer")
45 self.check_all("SocketServer")
46 self.check_all("StringIO")
47 self.check_all("UserString")
48 self.check_all("aifc")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000049 self.check_all("audiodev")
50 self.check_all("base64")
51 self.check_all("bdb")
52 self.check_all("binhex")
53 self.check_all("calendar")
54 self.check_all("cgi")
55 self.check_all("cmd")
56 self.check_all("code")
57 self.check_all("codecs")
58 self.check_all("codeop")
59 self.check_all("colorsys")
60 self.check_all("commands")
61 self.check_all("compileall")
62 self.check_all("copy")
63 self.check_all("copy_reg")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +000064 self.check_all("csv")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000065 self.check_all("dbhash")
Raymond Hettinger75cc1cb2004-07-01 11:15:39 +000066 self.check_all("decimal")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000067 self.check_all("difflib")
68 self.check_all("dircache")
69 self.check_all("dis")
70 self.check_all("doctest")
71 self.check_all("dummy_thread")
72 self.check_all("dummy_threading")
73 self.check_all("filecmp")
74 self.check_all("fileinput")
75 self.check_all("fnmatch")
76 self.check_all("fpformat")
77 self.check_all("ftplib")
78 self.check_all("getopt")
79 self.check_all("getpass")
80 self.check_all("gettext")
81 self.check_all("glob")
82 self.check_all("gopherlib")
83 self.check_all("gzip")
Raymond Hettinger59efe362004-06-13 05:46:14 +000084 self.check_all("heapq")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000085 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")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +0000107 self.check_all("optparse")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000108 self.check_all("os")
109 self.check_all("os2emxpath")
110 self.check_all("pdb")
111 self.check_all("pickle")
Tim Peters90cf2122004-11-06 23:45:48 +0000112 self.check_all("pickletools")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000113 self.check_all("pipes")
114 self.check_all("popen2")
115 self.check_all("poplib")
116 self.check_all("posixpath")
117 self.check_all("pprint")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000118 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")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000126 self.check_all("repr")
127 self.check_all("rexec")
128 self.check_all("rfc822")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000129 self.check_all("rlcompleter")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000130 self.check_all("robotparser")
131 self.check_all("sched")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000132 self.check_all("sgmllib")
133 self.check_all("shelve")
134 self.check_all("shlex")
135 self.check_all("shutil")
136 self.check_all("smtpd")
137 self.check_all("smtplib")
138 self.check_all("sndhdr")
139 self.check_all("socket")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000140 self.check_all("_strptime")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000141 self.check_all("symtable")
142 self.check_all("tabnanny")
143 self.check_all("tarfile")
144 self.check_all("telnetlib")
145 self.check_all("tempfile")
146 self.check_all("textwrap")
147 self.check_all("threading")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000148 self.check_all("timeit")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000149 self.check_all("toaiff")
150 self.check_all("tokenize")
151 self.check_all("traceback")
152 self.check_all("tty")
Raymond Hettinger2d72b5d2003-09-16 04:37:39 +0000153 self.check_all("unittest")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000154 self.check_all("urllib")
155 self.check_all("urlparse")
156 self.check_all("uu")
157 self.check_all("warnings")
158 self.check_all("wave")
159 self.check_all("weakref")
160 self.check_all("webbrowser")
161 self.check_all("xdrlib")
162 self.check_all("zipfile")
Guido van Rossum06e2a5e2002-10-09 18:17:06 +0000163
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000164 # rlcompleter needs special consideration; it import readline which
165 # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
166 try:
167 self.check_all("rlcompleter")
168 finally:
169 try:
170 import locale
171 except ImportError:
172 pass
173 else:
174 locale.setlocale(locale.LC_CTYPE, 'C')
175
176
177def test_main():
Guido van Rossumd8faa362007-04-27 19:54:29 +0000178 run_unittest(AllTest)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000179
180if __name__ == "__main__":
181 test_main()