NoClosingTagFixerTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of PHP CS Fixer.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  8. *
  9. * This source file is subject to the MIT license that is bundled
  10. * with this source code in the file LICENSE.
  11. */
  12. namespace PhpCsFixer\Tests\Fixer\PhpTag;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @internal
  16. *
  17. * @covers \PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer
  18. */
  19. final class NoClosingTagFixerTest extends AbstractFixerTestCase
  20. {
  21. /**
  22. * @dataProvider provideWithFullOpenTagCases
  23. */
  24. public function testWithFullOpenTag(string $expected, ?string $input = null): void
  25. {
  26. $this->doTest($expected, $input);
  27. }
  28. /**
  29. * @dataProvider provideWithShortOpenTagCases
  30. */
  31. public function testWithShortOpenTag(string $expected, ?string $input = null): void
  32. {
  33. if (!ini_get('short_open_tag')) {
  34. static::markTestSkipped('The short_open_tag option is required to be enabled.');
  35. }
  36. $this->doTest($expected, $input);
  37. }
  38. public function provideWithFullOpenTagCases(): array
  39. {
  40. return [
  41. [
  42. '<?php echo \'Foo\';',
  43. '<?php echo \'Foo\'; ?>',
  44. ],
  45. [
  46. '<?php echo \'Foo\';',
  47. '<?php echo \'Foo\';?>',
  48. ],
  49. [
  50. '<?php echo \'Foo\'; ?> PLAIN TEXT',
  51. ],
  52. [
  53. 'PLAIN TEXT<?php echo \'Foo\'; ?>',
  54. ],
  55. [
  56. '<?php
  57. echo \'Foo\';',
  58. '<?php
  59. echo \'Foo\';
  60. ?>',
  61. ],
  62. [
  63. '<?php echo \'Foo\'; ?>
  64. <p><?php echo \'this is a template\'; ?></p>
  65. <?php echo \'Foo\'; ?>',
  66. ],
  67. [
  68. '<?php echo "foo";',
  69. '<?php echo "foo" ?>',
  70. ],
  71. [
  72. '<?php
  73. class foo
  74. {
  75. public function bar()
  76. {
  77. echo "Here I am!";
  78. }
  79. }',
  80. '<?php
  81. class foo
  82. {
  83. public function bar()
  84. {
  85. echo "Here I am!";
  86. }
  87. }?>',
  88. ],
  89. [
  90. '<?php
  91. function bar()
  92. {
  93. echo "Here I am!";
  94. }',
  95. '<?php
  96. function bar()
  97. {
  98. echo "Here I am!";
  99. }?>',
  100. ],
  101. [
  102. '<?php
  103. if (true) {
  104. echo "Here I am!";
  105. }',
  106. '<?php
  107. if (true) {
  108. echo "Here I am!";
  109. }?>',
  110. ],
  111. 'Trailing linebreak, priority issue with SingleBlankLineAtEofFixer.' => [
  112. '<?php echo 1;',
  113. "<?php echo 1;\n?>\n",
  114. ],
  115. 'Trailing comment.' => [
  116. '<?php echo 1;// test',
  117. "<?php echo 1;// test\n?>",
  118. ],
  119. 'No code' => [
  120. '<?php ',
  121. '<?php ?>',
  122. ],
  123. 'No code, only comment' => [
  124. '<?php /* license */',
  125. '<?php /* license */ ?>',
  126. ],
  127. [
  128. '<?php ?>aa',
  129. ],
  130. ];
  131. }
  132. public function provideWithShortOpenTagCases(): array
  133. {
  134. return [
  135. [
  136. '<? echo \'Foo\';',
  137. '<? echo \'Foo\'; ?>',
  138. ],
  139. [
  140. '<? echo \'Foo\';',
  141. '<? echo \'Foo\';?>',
  142. ],
  143. [
  144. '<? echo \'Foo\'; ?>
  145. <p><? echo \'this is a template\'; ?></p>
  146. <? echo \'Foo\'; ?>',
  147. ],
  148. [
  149. '<? /**/', '<? /**/?>',
  150. ],
  151. [
  152. '<?= "somestring"; ?> <?= "anotherstring"; ?>',
  153. ],
  154. [
  155. '<?= 1;',
  156. '<?= 1; ?>',
  157. ],
  158. ];
  159. }
  160. }