test_text_file.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. """Tests for distutils.text_file."""
  2. from distutils.tests import support
  3. from distutils.text_file import TextFile
  4. import jaraco.path
  5. import path
  6. TEST_DATA = """# test file
  7. line 3 \\
  8. # intervening comment
  9. continues on next line
  10. """
  11. class TestTextFile(support.TempdirManager):
  12. def test_class(self):
  13. # old tests moved from text_file.__main__
  14. # so they are really called by the buildbots
  15. # result 1: no fancy options
  16. result1 = [
  17. '# test file\n',
  18. '\n',
  19. 'line 3 \\\n',
  20. '# intervening comment\n',
  21. ' continues on next line\n',
  22. ]
  23. # result 2: just strip comments
  24. result2 = ["\n", "line 3 \\\n", " continues on next line\n"]
  25. # result 3: just strip blank lines
  26. result3 = [
  27. "# test file\n",
  28. "line 3 \\\n",
  29. "# intervening comment\n",
  30. " continues on next line\n",
  31. ]
  32. # result 4: default, strip comments, blank lines,
  33. # and trailing whitespace
  34. result4 = ["line 3 \\", " continues on next line"]
  35. # result 5: strip comments and blanks, plus join lines (but don't
  36. # "collapse" joined lines
  37. result5 = ["line 3 continues on next line"]
  38. # result 6: strip comments and blanks, plus join lines (and
  39. # "collapse" joined lines
  40. result6 = ["line 3 continues on next line"]
  41. def test_input(count, description, file, expected_result):
  42. result = file.readlines()
  43. assert result == expected_result
  44. tmp_path = path.Path(self.mkdtemp())
  45. filename = tmp_path / 'test.txt'
  46. jaraco.path.build({filename.name: TEST_DATA}, tmp_path)
  47. in_file = TextFile(
  48. filename,
  49. strip_comments=False,
  50. skip_blanks=False,
  51. lstrip_ws=False,
  52. rstrip_ws=False,
  53. )
  54. try:
  55. test_input(1, "no processing", in_file, result1)
  56. finally:
  57. in_file.close()
  58. in_file = TextFile(
  59. filename,
  60. strip_comments=True,
  61. skip_blanks=False,
  62. lstrip_ws=False,
  63. rstrip_ws=False,
  64. )
  65. try:
  66. test_input(2, "strip comments", in_file, result2)
  67. finally:
  68. in_file.close()
  69. in_file = TextFile(
  70. filename,
  71. strip_comments=False,
  72. skip_blanks=True,
  73. lstrip_ws=False,
  74. rstrip_ws=False,
  75. )
  76. try:
  77. test_input(3, "strip blanks", in_file, result3)
  78. finally:
  79. in_file.close()
  80. in_file = TextFile(filename)
  81. try:
  82. test_input(4, "default processing", in_file, result4)
  83. finally:
  84. in_file.close()
  85. in_file = TextFile(
  86. filename,
  87. strip_comments=True,
  88. skip_blanks=True,
  89. join_lines=True,
  90. rstrip_ws=True,
  91. )
  92. try:
  93. test_input(5, "join lines without collapsing", in_file, result5)
  94. finally:
  95. in_file.close()
  96. in_file = TextFile(
  97. filename,
  98. strip_comments=True,
  99. skip_blanks=True,
  100. join_lines=True,
  101. rstrip_ws=True,
  102. collapse_join=True,
  103. )
  104. try:
  105. test_input(6, "join lines with collapsing", in_file, result6)
  106. finally:
  107. in_file.close()