diff options
author | R David Murray <rdmurray@bitdance.com> | 2012-04-05 01:28:14 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2012-04-05 01:28:14 (GMT) |
commit | 54ac832a24a0f40ea3278707420b191be3619c99 (patch) | |
tree | 67046379cb835bbc0e4e2b0e387ec763222e8814 /Lib | |
parent | b6046301ef70ca30f106038cf3799278e770d3ca (diff) | |
download | cpython-54ac832a24a0f40ea3278707420b191be3619c99.zip cpython-54ac832a24a0f40ea3278707420b191be3619c99.tar.gz cpython-54ac832a24a0f40ea3278707420b191be3619c99.tar.bz2 |
#14490, #14491: add 'sundry'-style import tests for Tools/scripts.
This patch changes a few of the scripts to have __name__=='__main__'
clauses so that they are importable without running. Also fixes the
syntax errors revealed by the tests.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_tools.py | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py index 1682124..8c9054a 100644 --- a/Lib/test/test_tools.py +++ b/Lib/test/test_tools.py @@ -5,6 +5,7 @@ Tools directory of a Python checkout or tarball, such as reindent.py. """ import os +import sys import unittest import sysconfig from test import support @@ -17,10 +18,11 @@ if not sysconfig.is_python_build(): srcdir = sysconfig.get_config_var('projectbase') basepath = os.path.join(os.getcwd(), srcdir, 'Tools') +scriptsdir = os.path.join(basepath, 'scripts') class ReindentTests(unittest.TestCase): - script = os.path.join(basepath, 'scripts', 'reindent.py') + script = os.path.join(scriptsdir, 'reindent.py') def test_noargs(self): assert_python_ok(self.script) @@ -31,8 +33,47 @@ class ReindentTests(unittest.TestCase): self.assertGreater(err, b'') +class TestSundryScripts(unittest.TestCase): + # At least make sure the rest don't have syntax errors. When tests are + # added for a script it should be added to the whitelist below. + + # scripts that have independent tests. + whitelist = ['reindent.py'] + # scripts that can't be imported without running + blacklist = ['make_ctype.py'] + # scripts that use windows-only modules + windows_only = ['win_add2path.py'] + # blacklisted for other reasons + other = ['analyze_dxp.py'] + + skiplist = blacklist + whitelist + windows_only + other + + def setUp(self): + cm = support.DirsOnSysPath(scriptsdir) + cm.__enter__() + self.addCleanup(cm.__exit__) + + def test_sundry(self): + for fn in os.listdir(scriptsdir): + if fn.endswith('.py') and fn not in self.skiplist: + __import__(fn[:-3]) + + @unittest.skipIf(sys.platform != "win32", "Windows-only test") + def test_sundry_windows(self): + for fn in self.windows_only: + __import__(fn[:-3]) + + def test_analyze_dxp_import(self): + if hasattr(sys, 'getdxp'): + import analyze_dxp + else: + with self.assertRaises(RuntimeError): + import analyze_dxp + + def test_main(): - support.run_unittest(ReindentTests) + support.run_unittest(*[obj for obj in globals().values() + if isinstance(obj, type)]) if __name__ == '__main__': |