17db96d56Sopenharmony_ci"""Tests for scripts in the Tools directory. 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciThis file contains extremely basic regression tests for the scripts found in 47db96d56Sopenharmony_cithe Tools directory of a Python checkout or tarball which don't have separate 57db96d56Sopenharmony_citests of their own. 67db96d56Sopenharmony_ci""" 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ciimport os 97db96d56Sopenharmony_ciimport sys 107db96d56Sopenharmony_ciimport unittest 117db96d56Sopenharmony_cifrom test.support import import_helper 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_cifrom test.test_tools import scriptsdir, import_tool, skip_if_missing 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ciskip_if_missing() 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ciclass TestSundryScripts(unittest.TestCase): 187db96d56Sopenharmony_ci # At least make sure the rest don't have syntax errors. When tests are 197db96d56Sopenharmony_ci # added for a script it should be added to the allowlist below. 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci # scripts that have independent tests. 227db96d56Sopenharmony_ci allowlist = ['reindent', 'pdeps', 'gprof2html', 'md5sum'] 237db96d56Sopenharmony_ci # scripts that can't be imported without running 247db96d56Sopenharmony_ci denylist = ['make_ctype'] 257db96d56Sopenharmony_ci # scripts that use windows-only modules 267db96d56Sopenharmony_ci windows_only = ['win_add2path'] 277db96d56Sopenharmony_ci # denylisted for other reasons 287db96d56Sopenharmony_ci other = ['analyze_dxp', '2to3'] 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ci skiplist = denylist + allowlist + windows_only + other 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci def test_sundry(self): 337db96d56Sopenharmony_ci old_modules = import_helper.modules_setup() 347db96d56Sopenharmony_ci try: 357db96d56Sopenharmony_ci for fn in os.listdir(scriptsdir): 367db96d56Sopenharmony_ci if not fn.endswith('.py'): 377db96d56Sopenharmony_ci continue 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci name = fn[:-3] 407db96d56Sopenharmony_ci if name in self.skiplist: 417db96d56Sopenharmony_ci continue 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci import_tool(name) 447db96d56Sopenharmony_ci finally: 457db96d56Sopenharmony_ci # Unload all modules loaded in this test 467db96d56Sopenharmony_ci import_helper.modules_cleanup(*old_modules) 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci @unittest.skipIf(sys.platform != "win32", "Windows-only test") 497db96d56Sopenharmony_ci def test_sundry_windows(self): 507db96d56Sopenharmony_ci for name in self.windows_only: 517db96d56Sopenharmony_ci import_tool(name) 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci def test_analyze_dxp_import(self): 547db96d56Sopenharmony_ci if hasattr(sys, 'getdxp'): 557db96d56Sopenharmony_ci import_tool('analyze_dxp') 567db96d56Sopenharmony_ci else: 577db96d56Sopenharmony_ci with self.assertRaises(RuntimeError): 587db96d56Sopenharmony_ci import_tool('analyze_dxp') 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ciif __name__ == '__main__': 627db96d56Sopenharmony_ci unittest.main() 63