Barry Warsaw | 408b6d3 | 2002-07-30 23:27:12 +0000 | [diff] [blame] | 1 | from test.test_support import verify, verbose |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 2 | import sys |
Tim Peters | b05cd49 | 2002-04-11 20:04:12 +0000 | [diff] [blame] | 3 | import warnings |
| 4 | |
Tim Peters | d392506 | 2002-04-16 01:27:44 +0000 | [diff] [blame] | 5 | warnings.filterwarnings("ignore", ".* 'pre' .*", DeprecationWarning, |
| 6 | r'pre$') |
| 7 | warnings.filterwarnings("ignore", ".* regsub .*", DeprecationWarning, |
| 8 | r'^regsub$') |
| 9 | warnings.filterwarnings("ignore", ".* statcache .*", DeprecationWarning, |
| 10 | r'statcache$') |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 11 | |
Guido van Rossum | d0f5e70 | 2001-01-22 23:37:04 +0000 | [diff] [blame] | 12 | def check_all(modname): |
| 13 | names = {} |
Skip Montanaro | 03d9014 | 2001-01-25 15:29:22 +0000 | [diff] [blame] | 14 | try: |
| 15 | exec "import %s" % modname in names |
| 16 | except ImportError: |
Tim Peters | 76c066b | 2001-02-12 03:27:31 +0000 | [diff] [blame] | 17 | # Silent fail here seems the best route since some modules |
| 18 | # may not be available in all environments. |
| 19 | # Since an ImportError may leave a partial module object in |
| 20 | # sys.modules, get rid of that first. Here's what happens if |
| 21 | # you don't: importing pty fails on Windows because pty tries to |
| 22 | # import FCNTL, which doesn't exist. That raises an ImportError, |
| 23 | # caught here. It also leaves a partial pty module in sys.modules. |
| 24 | # So when test_pty is called later, the import of pty succeeds, |
| 25 | # but shouldn't. As a result, test_pty crashes with an |
Andrew M. Kuchling | a2085cb | 2001-11-02 21:45:39 +0000 | [diff] [blame] | 26 | # AttributeError instead of an ImportError, and regrtest interprets |
Tim Peters | 76c066b | 2001-02-12 03:27:31 +0000 | [diff] [blame] | 27 | # the latter as a test failure (ImportError is treated as "test |
| 28 | # skipped" -- which is what test_pty should say on Windows). |
| 29 | try: |
| 30 | del sys.modules[modname] |
| 31 | except KeyError: |
| 32 | pass |
Skip Montanaro | 03d9014 | 2001-01-25 15:29:22 +0000 | [diff] [blame] | 33 | return |
Guido van Rossum | d0f5e70 | 2001-01-22 23:37:04 +0000 | [diff] [blame] | 34 | verify(hasattr(sys.modules[modname], "__all__"), |
| 35 | "%s has no __all__ attribute" % modname) |
| 36 | names = {} |
| 37 | exec "from %s import *" % modname in names |
Skip Montanaro | cc012e9 | 2001-02-07 22:46:55 +0000 | [diff] [blame] | 38 | if names.has_key("__builtins__"): |
| 39 | del names["__builtins__"] |
Guido van Rossum | d0f5e70 | 2001-01-22 23:37:04 +0000 | [diff] [blame] | 40 | keys = names.keys() |
| 41 | keys.sort() |
| 42 | all = list(sys.modules[modname].__all__) # in case it's a tuple |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 43 | all.sort() |
Guido van Rossum | d0f5e70 | 2001-01-22 23:37:04 +0000 | [diff] [blame] | 44 | verify(keys==all, "%s != %s" % (keys, all)) |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 45 | |
Tim Peters | cbfc034 | 2001-12-07 21:35:42 +0000 | [diff] [blame] | 46 | if not sys.platform.startswith('java'): |
| 47 | # In case _socket fails to build, make this test fail more gracefully |
| 48 | # than an AttributeError somewhere deep in CGIHTTPServer. |
| 49 | import _socket |
Tim Peters | ab9ba27 | 2001-08-09 21:40:30 +0000 | [diff] [blame] | 50 | |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 51 | check_all("BaseHTTPServer") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 52 | check_all("CGIHTTPServer") |
| 53 | check_all("ConfigParser") |
| 54 | check_all("Cookie") |
| 55 | check_all("MimeWriter") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 56 | check_all("SimpleHTTPServer") |
| 57 | check_all("SocketServer") |
| 58 | check_all("StringIO") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 59 | check_all("UserString") |
| 60 | check_all("aifc") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 61 | check_all("atexit") |
| 62 | check_all("audiodev") |
| 63 | check_all("base64") |
| 64 | check_all("bdb") |
| 65 | check_all("binhex") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 66 | check_all("calendar") |
| 67 | check_all("cgi") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 68 | check_all("cmd") |
| 69 | check_all("code") |
| 70 | check_all("codecs") |
| 71 | check_all("codeop") |
| 72 | check_all("colorsys") |
| 73 | check_all("commands") |
| 74 | check_all("compileall") |
| 75 | check_all("copy") |
| 76 | check_all("copy_reg") |
Skip Montanaro | 03d9014 | 2001-01-25 15:29:22 +0000 | [diff] [blame] | 77 | check_all("dbhash") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 78 | check_all("dircache") |
| 79 | check_all("dis") |
Skip Montanaro | eccd02a | 2001-01-20 23:34:12 +0000 | [diff] [blame] | 80 | check_all("doctest") |
| 81 | check_all("dospath") |
Skip Montanaro | eccd02a | 2001-01-20 23:34:12 +0000 | [diff] [blame] | 82 | check_all("filecmp") |
| 83 | check_all("fileinput") |
| 84 | check_all("fnmatch") |
| 85 | check_all("fpformat") |
| 86 | check_all("ftplib") |
| 87 | check_all("getopt") |
| 88 | check_all("getpass") |
Skip Montanaro | 2dd4276 | 2001-01-23 15:35:05 +0000 | [diff] [blame] | 89 | check_all("gettext") |
Skip Montanaro | eccd02a | 2001-01-20 23:34:12 +0000 | [diff] [blame] | 90 | check_all("glob") |
Barry Warsaw | 24f3aca | 2001-01-24 04:13:02 +0000 | [diff] [blame] | 91 | check_all("gopherlib") |
Skip Montanaro | 2dd4276 | 2001-01-23 15:35:05 +0000 | [diff] [blame] | 92 | check_all("gzip") |
Skip Montanaro | 2dd4276 | 2001-01-23 15:35:05 +0000 | [diff] [blame] | 93 | check_all("htmllib") |
| 94 | check_all("httplib") |
| 95 | check_all("ihooks") |
| 96 | check_all("imaplib") |
Skip Montanaro | 17ab123 | 2001-01-24 06:27:27 +0000 | [diff] [blame] | 97 | check_all("imghdr") |
| 98 | check_all("imputil") |
| 99 | check_all("keyword") |
| 100 | check_all("linecache") |
| 101 | check_all("locale") |
| 102 | check_all("macpath") |
| 103 | check_all("macurl2path") |
| 104 | check_all("mailbox") |
| 105 | check_all("mhlib") |
Skip Montanaro | 03d9014 | 2001-01-25 15:29:22 +0000 | [diff] [blame] | 106 | check_all("mimetools") |
| 107 | check_all("mimetypes") |
| 108 | check_all("mimify") |
Skip Montanaro | 269b83b | 2001-02-06 01:07:02 +0000 | [diff] [blame] | 109 | check_all("multifile") |
Skip Montanaro | 269b83b | 2001-02-06 01:07:02 +0000 | [diff] [blame] | 110 | check_all("netrc") |
| 111 | check_all("nntplib") |
| 112 | check_all("ntpath") |
Skip Montanaro | 269b83b | 2001-02-06 01:07:02 +0000 | [diff] [blame] | 113 | check_all("os") |
Skip Montanaro | 352674d | 2001-02-07 23:14:30 +0000 | [diff] [blame] | 114 | check_all("pdb") |
| 115 | check_all("pickle") |
| 116 | check_all("pipes") |
| 117 | check_all("popen2") |
Skip Montanaro | c62c81e | 2001-02-12 02:00:42 +0000 | [diff] [blame] | 118 | check_all("poplib") |
Skip Montanaro | c62c81e | 2001-02-12 02:00:42 +0000 | [diff] [blame] | 119 | check_all("posixpath") |
| 120 | check_all("pprint") |
Tim Peters | b05cd49 | 2002-04-11 20:04:12 +0000 | [diff] [blame] | 121 | check_all("pre") # deprecated |
Skip Montanaro | c62c81e | 2001-02-12 02:00:42 +0000 | [diff] [blame] | 122 | check_all("profile") |
| 123 | check_all("pstats") |
| 124 | check_all("pty") |
| 125 | check_all("py_compile") |
| 126 | check_all("pyclbr") |
| 127 | check_all("quopri") |
Skip Montanaro | 0de6580 | 2001-02-15 22:15:14 +0000 | [diff] [blame] | 128 | check_all("random") |
| 129 | check_all("re") |
| 130 | check_all("reconvert") |
Skip Montanaro | 0de6580 | 2001-02-15 22:15:14 +0000 | [diff] [blame] | 131 | check_all("regsub") |
| 132 | check_all("repr") |
| 133 | check_all("rexec") |
| 134 | check_all("rfc822") |
Skip Montanaro | e99d5ea | 2001-01-20 19:54:20 +0000 | [diff] [blame] | 135 | check_all("robotparser") |
Skip Montanaro | 0de6580 | 2001-02-15 22:15:14 +0000 | [diff] [blame] | 136 | check_all("sched") |
| 137 | check_all("sgmllib") |
| 138 | check_all("shelve") |
| 139 | check_all("shlex") |
| 140 | check_all("shutil") |
| 141 | check_all("smtpd") |
| 142 | check_all("smtplib") |
| 143 | check_all("sndhdr") |
| 144 | check_all("socket") |
| 145 | check_all("sre") |
Skip Montanaro | 0de6580 | 2001-02-15 22:15:14 +0000 | [diff] [blame] | 146 | check_all("stat_cache") |
Skip Montanaro | 40fc160 | 2001-03-01 04:27:19 +0000 | [diff] [blame] | 147 | check_all("tabnanny") |
| 148 | check_all("telnetlib") |
| 149 | check_all("tempfile") |
| 150 | check_all("toaiff") |
| 151 | check_all("tokenize") |
| 152 | check_all("traceback") |
| 153 | check_all("tty") |
| 154 | check_all("urllib") |
| 155 | check_all("urlparse") |
| 156 | check_all("uu") |
| 157 | check_all("warnings") |
| 158 | check_all("wave") |
| 159 | check_all("weakref") |
| 160 | check_all("webbrowser") |
| 161 | check_all("xdrlib") |
| 162 | check_all("zipfile") |
Guido van Rossum | 06e2a5e | 2002-10-09 18:17:06 +0000 | [diff] [blame^] | 163 | |
| 164 | # rlcompleter needs special consideration; it import readline which |
| 165 | # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-( |
| 166 | try: |
| 167 | check_all("rlcompleter") |
| 168 | finally: |
| 169 | try: |
| 170 | import locale |
| 171 | except ImportError: |
| 172 | pass |
| 173 | else: |
| 174 | locale.setlocale(locale.LC_CTYPE, 'C') |