blob: 89395bec0f627e17c49b58a00ba566a487bdcb27 [file] [log] [blame]
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +00001import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002from test.support import run_unittest, catch_warning
Skip Montanaroe99d5ea2001-01-20 19:54:20 +00003import sys
Christian Heimes75ca4ea2008-05-06 23:48:04 +00004import warnings
Tim Petersb05cd492002-04-11 20:04:12 +00005
Skip Montanaroe99d5ea2001-01-20 19:54:20 +00006
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +00007class AllTest(unittest.TestCase):
8
9 def check_all(self, modname):
10 names = {}
Christian Heimes75ca4ea2008-05-06 23:48:04 +000011 with catch_warning():
Alexandre Vassalottia79e33e2008-05-15 22:51:26 +000012 warnings.filterwarnings("ignore", ".* (module|package)",
13 DeprecationWarning)
Christian Heimes75ca4ea2008-05-06 23:48:04 +000014 try:
15 exec("import %s" % modname, names)
16 except ImportError:
17 # Silent fail here seems the best route since some modules
18 # may not be available in all environments.
19 return
Guido van Rossumd8faa362007-04-27 19:54:29 +000020 self.failUnless(hasattr(sys.modules[modname], "__all__"),
21 "%s has no __all__ attribute" % modname)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000022 names = {}
Georg Brandl7cae87c2006-09-06 06:51:57 +000023 exec("from %s import *" % modname, names)
Guido van Rossume2b70bc2006-08-18 22:13:04 +000024 if "__builtins__" in names:
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000025 del names["__builtins__"]
Raymond Hettingera690a992003-11-16 16:17:49 +000026 keys = set(names)
27 all = set(sys.modules[modname].__all__)
Guido van Rossumd8faa362007-04-27 19:54:29 +000028 self.assertEqual(keys, all)
Skip Montanaroe99d5ea2001-01-20 19:54:20 +000029
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000030 def test_all(self):
31 if not sys.platform.startswith('java'):
32 # In case _socket fails to build, make this test fail more gracefully
33 # than an AttributeError somewhere deep in CGIHTTPServer.
34 import _socket
Tim Petersab9ba272001-08-09 21:40:30 +000035
Georg Brandl24420152008-05-26 16:32:26 +000036 self.check_all("http.server")
Alexandre Vassalotti1d1eaa42008-05-14 22:59:42 +000037 self.check_all("configparser")
Georg Brandl24420152008-05-26 16:32:26 +000038 self.check_all("http.cookies")
39 self.check_all("queue")
Alexandre Vassalottice261952008-05-12 02:31:37 +000040 self.check_all("socketserver")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000041 self.check_all("aifc")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000042 self.check_all("base64")
43 self.check_all("bdb")
44 self.check_all("binhex")
45 self.check_all("calendar")
Brett Cannon23a4a7b2008-05-12 00:56:28 +000046 self.check_all("collections")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000047 self.check_all("cgi")
48 self.check_all("cmd")
49 self.check_all("code")
50 self.check_all("codecs")
51 self.check_all("codeop")
52 self.check_all("colorsys")
53 self.check_all("commands")
54 self.check_all("compileall")
55 self.check_all("copy")
Alexandre Vassalottif7fa63d2008-05-11 08:55:36 +000056 self.check_all("copyreg")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +000057 self.check_all("csv")
Georg Brandl0a7ac7d2008-05-26 10:29:35 +000058 self.check_all("dbm.bsd")
Raymond Hettinger75cc1cb2004-07-01 11:15:39 +000059 self.check_all("decimal")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000060 self.check_all("difflib")
61 self.check_all("dircache")
62 self.check_all("dis")
63 self.check_all("doctest")
Georg Brandl2067bfd2008-05-25 13:05:15 +000064 self.check_all("_dummy_thread")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000065 self.check_all("dummy_threading")
66 self.check_all("filecmp")
67 self.check_all("fileinput")
68 self.check_all("fnmatch")
69 self.check_all("fpformat")
70 self.check_all("ftplib")
71 self.check_all("getopt")
72 self.check_all("getpass")
73 self.check_all("gettext")
74 self.check_all("glob")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000075 self.check_all("gzip")
Raymond Hettinger59efe362004-06-13 05:46:14 +000076 self.check_all("heapq")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000077 self.check_all("htmllib")
Georg Brandl24420152008-05-26 16:32:26 +000078 self.check_all("http.client")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000079 self.check_all("ihooks")
80 self.check_all("imaplib")
81 self.check_all("imghdr")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000082 self.check_all("keyword")
83 self.check_all("linecache")
84 self.check_all("locale")
85 self.check_all("macpath")
86 self.check_all("macurl2path")
87 self.check_all("mailbox")
88 self.check_all("mailcap")
89 self.check_all("mhlib")
90 self.check_all("mimetools")
91 self.check_all("mimetypes")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000092 self.check_all("multifile")
93 self.check_all("netrc")
94 self.check_all("nntplib")
95 self.check_all("ntpath")
96 self.check_all("opcode")
Raymond Hettingerb7b4ce22003-05-10 05:37:13 +000097 self.check_all("optparse")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +000098 self.check_all("os")
99 self.check_all("os2emxpath")
100 self.check_all("pdb")
101 self.check_all("pickle")
Tim Peters90cf2122004-11-06 23:45:48 +0000102 self.check_all("pickletools")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000103 self.check_all("pipes")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000104 self.check_all("poplib")
105 self.check_all("posixpath")
106 self.check_all("pprint")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000107 self.check_all("profile")
108 self.check_all("pstats")
109 self.check_all("pty")
110 self.check_all("py_compile")
111 self.check_all("pyclbr")
112 self.check_all("quopri")
113 self.check_all("random")
114 self.check_all("re")
Alexandre Vassalotti1f2ba4b2008-05-16 07:12:44 +0000115 self.check_all("reprlib")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000116 self.check_all("rfc822")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000117 self.check_all("rlcompleter")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000118 self.check_all("robotparser")
119 self.check_all("sched")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000120 self.check_all("sgmllib")
121 self.check_all("shelve")
122 self.check_all("shlex")
123 self.check_all("shutil")
124 self.check_all("smtpd")
125 self.check_all("smtplib")
126 self.check_all("sndhdr")
127 self.check_all("socket")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000128 self.check_all("_strptime")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000129 self.check_all("symtable")
130 self.check_all("tabnanny")
131 self.check_all("tarfile")
132 self.check_all("telnetlib")
133 self.check_all("tempfile")
Benjamin Peterson744c2cd2008-05-26 16:26:37 +0000134 self.check_all("test.support")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000135 self.check_all("textwrap")
136 self.check_all("threading")
Raymond Hettinger2e973c02003-05-02 09:36:07 +0000137 self.check_all("timeit")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000138 self.check_all("tokenize")
139 self.check_all("traceback")
140 self.check_all("tty")
Raymond Hettinger2d72b5d2003-09-16 04:37:39 +0000141 self.check_all("unittest")
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000142 self.check_all("urllib")
143 self.check_all("urlparse")
144 self.check_all("uu")
145 self.check_all("warnings")
146 self.check_all("wave")
147 self.check_all("weakref")
148 self.check_all("webbrowser")
149 self.check_all("xdrlib")
150 self.check_all("zipfile")
Guido van Rossum06e2a5e2002-10-09 18:17:06 +0000151
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000152 # rlcompleter needs special consideration; it import readline which
153 # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
154 try:
155 self.check_all("rlcompleter")
156 finally:
157 try:
158 import locale
159 except ImportError:
160 pass
161 else:
162 locale.setlocale(locale.LC_CTYPE, 'C')
163
164
165def test_main():
Guido van Rossumd8faa362007-04-27 19:54:29 +0000166 run_unittest(AllTest)
Walter Dörwaldb1ded1e2003-04-15 11:10:33 +0000167
168if __name__ == "__main__":
169 test_main()