17db96d56Sopenharmony_ci"""Tests for distutils.text_file.""" 27db96d56Sopenharmony_ciimport os 37db96d56Sopenharmony_ciimport unittest 47db96d56Sopenharmony_cifrom distutils.text_file import TextFile 57db96d56Sopenharmony_cifrom distutils.tests import support 67db96d56Sopenharmony_cifrom test.support import run_unittest 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ciTEST_DATA = """# test file 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciline 3 \\ 117db96d56Sopenharmony_ci# intervening comment 127db96d56Sopenharmony_ci continues on next line 137db96d56Sopenharmony_ci""" 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ciclass TextFileTestCase(support.TempdirManager, unittest.TestCase): 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci def test_class(self): 187db96d56Sopenharmony_ci # old tests moved from text_file.__main__ 197db96d56Sopenharmony_ci # so they are really called by the buildbots 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci # result 1: no fancy options 227db96d56Sopenharmony_ci result1 = ['# test file\n', '\n', 'line 3 \\\n', 237db96d56Sopenharmony_ci '# intervening comment\n', 247db96d56Sopenharmony_ci ' continues on next line\n'] 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci # result 2: just strip comments 277db96d56Sopenharmony_ci result2 = ["\n", 287db96d56Sopenharmony_ci "line 3 \\\n", 297db96d56Sopenharmony_ci " continues on next line\n"] 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci # result 3: just strip blank lines 327db96d56Sopenharmony_ci result3 = ["# test file\n", 337db96d56Sopenharmony_ci "line 3 \\\n", 347db96d56Sopenharmony_ci "# intervening comment\n", 357db96d56Sopenharmony_ci " continues on next line\n"] 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci # result 4: default, strip comments, blank lines, 387db96d56Sopenharmony_ci # and trailing whitespace 397db96d56Sopenharmony_ci result4 = ["line 3 \\", 407db96d56Sopenharmony_ci " continues on next line"] 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci # result 5: strip comments and blanks, plus join lines (but don't 437db96d56Sopenharmony_ci # "collapse" joined lines 447db96d56Sopenharmony_ci result5 = ["line 3 continues on next line"] 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci # result 6: strip comments and blanks, plus join lines (and 477db96d56Sopenharmony_ci # "collapse" joined lines 487db96d56Sopenharmony_ci result6 = ["line 3 continues on next line"] 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci def test_input(count, description, file, expected_result): 517db96d56Sopenharmony_ci result = file.readlines() 527db96d56Sopenharmony_ci self.assertEqual(result, expected_result) 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci tmpdir = self.mkdtemp() 557db96d56Sopenharmony_ci filename = os.path.join(tmpdir, "test.txt") 567db96d56Sopenharmony_ci out_file = open(filename, "w") 577db96d56Sopenharmony_ci try: 587db96d56Sopenharmony_ci out_file.write(TEST_DATA) 597db96d56Sopenharmony_ci finally: 607db96d56Sopenharmony_ci out_file.close() 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci in_file = TextFile(filename, strip_comments=0, skip_blanks=0, 637db96d56Sopenharmony_ci lstrip_ws=0, rstrip_ws=0) 647db96d56Sopenharmony_ci try: 657db96d56Sopenharmony_ci test_input(1, "no processing", in_file, result1) 667db96d56Sopenharmony_ci finally: 677db96d56Sopenharmony_ci in_file.close() 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci in_file = TextFile(filename, strip_comments=1, skip_blanks=0, 707db96d56Sopenharmony_ci lstrip_ws=0, rstrip_ws=0) 717db96d56Sopenharmony_ci try: 727db96d56Sopenharmony_ci test_input(2, "strip comments", in_file, result2) 737db96d56Sopenharmony_ci finally: 747db96d56Sopenharmony_ci in_file.close() 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci in_file = TextFile(filename, strip_comments=0, skip_blanks=1, 777db96d56Sopenharmony_ci lstrip_ws=0, rstrip_ws=0) 787db96d56Sopenharmony_ci try: 797db96d56Sopenharmony_ci test_input(3, "strip blanks", in_file, result3) 807db96d56Sopenharmony_ci finally: 817db96d56Sopenharmony_ci in_file.close() 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci in_file = TextFile(filename) 847db96d56Sopenharmony_ci try: 857db96d56Sopenharmony_ci test_input(4, "default processing", in_file, result4) 867db96d56Sopenharmony_ci finally: 877db96d56Sopenharmony_ci in_file.close() 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci in_file = TextFile(filename, strip_comments=1, skip_blanks=1, 907db96d56Sopenharmony_ci join_lines=1, rstrip_ws=1) 917db96d56Sopenharmony_ci try: 927db96d56Sopenharmony_ci test_input(5, "join lines without collapsing", in_file, result5) 937db96d56Sopenharmony_ci finally: 947db96d56Sopenharmony_ci in_file.close() 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci in_file = TextFile(filename, strip_comments=1, skip_blanks=1, 977db96d56Sopenharmony_ci join_lines=1, rstrip_ws=1, collapse_join=1) 987db96d56Sopenharmony_ci try: 997db96d56Sopenharmony_ci test_input(6, "join lines with collapsing", in_file, result6) 1007db96d56Sopenharmony_ci finally: 1017db96d56Sopenharmony_ci in_file.close() 1027db96d56Sopenharmony_ci 1037db96d56Sopenharmony_cidef test_suite(): 1047db96d56Sopenharmony_ci return unittest.TestLoader().loadTestsFromTestCase(TextFileTestCase) 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ciif __name__ == "__main__": 1077db96d56Sopenharmony_ci run_unittest(test_suite()) 108