Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_tools.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | e9b8115c5b25 |
| children | 5493299df0a0 73fba223c0a5 |
| rev | line source |
|---|---|
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
1 """Tests for scripts in the Tools directory. |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
2 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
3 This file contains regression tests for some of the scripts found in the |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
4 Tools directory of a Python checkout or tarball, such as reindent.py. |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
5 """ |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
6 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
7 import os |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
8 import sys |
|
76134
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
9 import imp |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
10 import unittest |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
11 import sysconfig |
|
76134
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
12 import tempfile |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
13 from test import support |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
14 from test.script_helper import assert_python_ok |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
15 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
16 if not sysconfig.is_python_build(): |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
17 # XXX some installers do contain the tools, should we detect that |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
18 # and run the tests in that case too? |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
19 raise unittest.SkipTest('test irrelevant for an installed Python') |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
20 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
21 srcdir = sysconfig.get_config_var('projectbase') |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
22 basepath = os.path.join(os.getcwd(), srcdir, 'Tools') |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
23 scriptsdir = os.path.join(basepath, 'scripts') |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
24 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
25 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
26 class ReindentTests(unittest.TestCase): |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
27 script = os.path.join(scriptsdir, 'reindent.py') |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
28 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
29 def test_noargs(self): |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
30 assert_python_ok(self.script) |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
31 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
32 def test_help(self): |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
33 rc, out, err = assert_python_ok(self.script, '-h') |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
34 self.assertEqual(out, b'') |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
35 self.assertGreater(err, b'') |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
36 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
37 |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
38 class TestSundryScripts(unittest.TestCase): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
39 # At least make sure the rest don't have syntax errors. When tests are |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
40 # added for a script it should be added to the whitelist below. |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
41 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
42 # scripts that have independent tests. |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
43 whitelist = ['reindent.py'] |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
44 # scripts that can't be imported without running |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
45 blacklist = ['make_ctype.py'] |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
46 # scripts that use windows-only modules |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
47 windows_only = ['win_add2path.py'] |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
48 # blacklisted for other reasons |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
49 other = ['analyze_dxp.py'] |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
50 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
51 skiplist = blacklist + whitelist + windows_only + other |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
52 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
53 def setUp(self): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
54 cm = support.DirsOnSysPath(scriptsdir) |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
55 cm.__enter__() |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
56 self.addCleanup(cm.__exit__) |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
57 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
58 def test_sundry(self): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
59 for fn in os.listdir(scriptsdir): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
60 if fn.endswith('.py') and fn not in self.skiplist: |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
61 __import__(fn[:-3]) |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
62 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
63 @unittest.skipIf(sys.platform != "win32", "Windows-only test") |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
64 def test_sundry_windows(self): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
65 for fn in self.windows_only: |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
66 __import__(fn[:-3]) |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
67 |
|
76108
058f9a9f97cd
test_tools fix: don't import analyze_dxp if no _thread module
R David Murray <rdmurray@bitdance.com>
parents:
76106
diff
changeset
|
68 @unittest.skipIf(not support.threading, "test requires _thread module") |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
69 def test_analyze_dxp_import(self): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
70 if hasattr(sys, 'getdxp'): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
71 import analyze_dxp |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
72 else: |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
73 with self.assertRaises(RuntimeError): |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
74 import analyze_dxp |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
75 |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
76 |
|
76134
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
77 class PdepsTests(unittest.TestCase): |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
78 |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
79 @classmethod |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
80 def setUpClass(self): |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
81 path = os.path.join(scriptsdir, 'pdeps.py') |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
82 self.pdeps = imp.load_source('pdeps', path) |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
83 |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
84 @classmethod |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
85 def tearDownClass(self): |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
86 if 'pdeps' in sys.modules: |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
87 del sys.modules['pdeps'] |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
88 |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
89 def test_process_errors(self): |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
90 # Issue #14492: m_import.match(line) can be None. |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
91 with tempfile.TemporaryDirectory() as tmpdir: |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
92 fn = os.path.join(tmpdir, 'foo') |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
93 with open(fn, 'w') as stream: |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
94 stream.write("#!/this/will/fail") |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
95 self.pdeps.process(fn, {}) |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
96 |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
97 def test_inverse_attribute_error(self): |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
98 # Issue #14492: this used to fail with an AttributeError. |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
99 self.pdeps.inverse({'a': []}) |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
100 |
|
e9b8115c5b25
#14492: fix some bugs in Tools/scripts/pdeps.py.
R David Murray <rdmurray@bitdance.com>
parents:
76108
diff
changeset
|
101 |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
102 def test_main(): |
|
76106
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
103 support.run_unittest(*[obj for obj in globals().values() |
|
62dde5dd475e
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
R David Murray <rdmurray@bitdance.com>
parents:
75281
diff
changeset
|
104 if isinstance(obj, type)]) |
|
75281
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
105 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
106 |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
107 if __name__ == '__main__': |
|
2887f5a97075
Add test file for scripts in Tools (#13447).
Éric Araujo <merwok@netwok.org>
parents:
diff
changeset
|
108 unittest.main() |
