| """Tests for scripts in the Tools directory. |
| |
| This file contains extremely basic regression tests for the scripts found in |
| the Tools directory of a Python checkout or tarball which don't have separate |
| tests of their own. |
| """ |
| |
| import os |
| import sys |
| import unittest |
| from test.support import import_helper |
| |
| from test.test_tools import scriptsdir, import_tool, skip_if_missing |
| |
| skip_if_missing() |
| |
| 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 allowlist below. |
| |
| # scripts that have independent tests. |
| allowlist = ['reindent'] |
| # scripts that can't be imported without running |
| denylist = ['make_ctype'] |
| # denylisted for other reasons |
| other = ['2to3'] |
| |
| skiplist = denylist + allowlist + other |
| |
| # import logging registers "atfork" functions which keep indirectly the |
| # logging module dictionary alive. Mock the function to be able to unload |
| # cleanly the logging module. |
| @import_helper.mock_register_at_fork |
| def test_sundry(self, mock_os): |
| old_modules = import_helper.modules_setup() |
| try: |
| for fn in os.listdir(scriptsdir): |
| if not fn.endswith('.py'): |
| continue |
| |
| name = fn[:-3] |
| if name in self.skiplist: |
| continue |
| |
| import_tool(name) |
| finally: |
| # Unload all modules loaded in this test |
| import_helper.modules_cleanup(*old_modules) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |