17db96d56Sopenharmony_ci"""Tests for distutils.cmd.""" 27db96d56Sopenharmony_ciimport unittest 37db96d56Sopenharmony_ciimport os 47db96d56Sopenharmony_cifrom test.support import captured_stdout, run_unittest 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_cifrom distutils.cmd import Command 77db96d56Sopenharmony_cifrom distutils.dist import Distribution 87db96d56Sopenharmony_cifrom distutils.errors import DistutilsOptionError 97db96d56Sopenharmony_cifrom distutils import debug 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ciclass MyCmd(Command): 127db96d56Sopenharmony_ci def initialize_options(self): 137db96d56Sopenharmony_ci pass 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ciclass CommandTestCase(unittest.TestCase): 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci def setUp(self): 187db96d56Sopenharmony_ci dist = Distribution() 197db96d56Sopenharmony_ci self.cmd = MyCmd(dist) 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci def test_ensure_string_list(self): 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci cmd = self.cmd 247db96d56Sopenharmony_ci cmd.not_string_list = ['one', 2, 'three'] 257db96d56Sopenharmony_ci cmd.yes_string_list = ['one', 'two', 'three'] 267db96d56Sopenharmony_ci cmd.not_string_list2 = object() 277db96d56Sopenharmony_ci cmd.yes_string_list2 = 'ok' 287db96d56Sopenharmony_ci cmd.ensure_string_list('yes_string_list') 297db96d56Sopenharmony_ci cmd.ensure_string_list('yes_string_list2') 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, 327db96d56Sopenharmony_ci cmd.ensure_string_list, 'not_string_list') 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, 357db96d56Sopenharmony_ci cmd.ensure_string_list, 'not_string_list2') 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci cmd.option1 = 'ok,dok' 387db96d56Sopenharmony_ci cmd.ensure_string_list('option1') 397db96d56Sopenharmony_ci self.assertEqual(cmd.option1, ['ok', 'dok']) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci cmd.option2 = ['xxx', 'www'] 427db96d56Sopenharmony_ci cmd.ensure_string_list('option2') 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci cmd.option3 = ['ok', 2] 457db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, cmd.ensure_string_list, 467db96d56Sopenharmony_ci 'option3') 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci def test_make_file(self): 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci cmd = self.cmd 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci # making sure it raises when infiles is not a string or a list/tuple 547db96d56Sopenharmony_ci self.assertRaises(TypeError, cmd.make_file, 557db96d56Sopenharmony_ci infiles=1, outfile='', func='func', args=()) 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci # making sure execute gets called properly 587db96d56Sopenharmony_ci def _execute(func, args, exec_msg, level): 597db96d56Sopenharmony_ci self.assertEqual(exec_msg, 'generating out from in') 607db96d56Sopenharmony_ci cmd.force = True 617db96d56Sopenharmony_ci cmd.execute = _execute 627db96d56Sopenharmony_ci cmd.make_file(infiles='in', outfile='out', func='func', args=()) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci def test_dump_options(self): 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci msgs = [] 677db96d56Sopenharmony_ci def _announce(msg, level): 687db96d56Sopenharmony_ci msgs.append(msg) 697db96d56Sopenharmony_ci cmd = self.cmd 707db96d56Sopenharmony_ci cmd.announce = _announce 717db96d56Sopenharmony_ci cmd.option1 = 1 727db96d56Sopenharmony_ci cmd.option2 = 1 737db96d56Sopenharmony_ci cmd.user_options = [('option1', '', ''), ('option2', '', '')] 747db96d56Sopenharmony_ci cmd.dump_options() 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci wanted = ["command options for 'MyCmd':", ' option1 = 1', 777db96d56Sopenharmony_ci ' option2 = 1'] 787db96d56Sopenharmony_ci self.assertEqual(msgs, wanted) 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci def test_ensure_string(self): 817db96d56Sopenharmony_ci cmd = self.cmd 827db96d56Sopenharmony_ci cmd.option1 = 'ok' 837db96d56Sopenharmony_ci cmd.ensure_string('option1') 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci cmd.option2 = None 867db96d56Sopenharmony_ci cmd.ensure_string('option2', 'xxx') 877db96d56Sopenharmony_ci self.assertTrue(hasattr(cmd, 'option2')) 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci cmd.option3 = 1 907db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, cmd.ensure_string, 'option3') 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci def test_ensure_filename(self): 937db96d56Sopenharmony_ci cmd = self.cmd 947db96d56Sopenharmony_ci cmd.option1 = __file__ 957db96d56Sopenharmony_ci cmd.ensure_filename('option1') 967db96d56Sopenharmony_ci cmd.option2 = 'xxx' 977db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, cmd.ensure_filename, 'option2') 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci def test_ensure_dirname(self): 1007db96d56Sopenharmony_ci cmd = self.cmd 1017db96d56Sopenharmony_ci cmd.option1 = os.path.dirname(__file__) or os.curdir 1027db96d56Sopenharmony_ci cmd.ensure_dirname('option1') 1037db96d56Sopenharmony_ci cmd.option2 = 'xxx' 1047db96d56Sopenharmony_ci self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2') 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci def test_debug_print(self): 1077db96d56Sopenharmony_ci cmd = self.cmd 1087db96d56Sopenharmony_ci with captured_stdout() as stdout: 1097db96d56Sopenharmony_ci cmd.debug_print('xxx') 1107db96d56Sopenharmony_ci stdout.seek(0) 1117db96d56Sopenharmony_ci self.assertEqual(stdout.read(), '') 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci debug.DEBUG = True 1147db96d56Sopenharmony_ci try: 1157db96d56Sopenharmony_ci with captured_stdout() as stdout: 1167db96d56Sopenharmony_ci cmd.debug_print('xxx') 1177db96d56Sopenharmony_ci stdout.seek(0) 1187db96d56Sopenharmony_ci self.assertEqual(stdout.read(), 'xxx\n') 1197db96d56Sopenharmony_ci finally: 1207db96d56Sopenharmony_ci debug.DEBUG = False 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_cidef test_suite(): 1237db96d56Sopenharmony_ci return unittest.TestLoader().loadTestsFromTestCase(CommandTestCase) 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ciif __name__ == '__main__': 1267db96d56Sopenharmony_ci run_unittest(test_suite()) 127