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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()