SpaceAfterSemicolonFixerTest.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  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\Semicolon;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @internal
  16. *
  17. * @covers \PhpCsFixer\Fixer\Semicolon\SpaceAfterSemicolonFixer
  18. */
  19. final class SpaceAfterSemicolonFixerTest extends AbstractFixerTestCase
  20. {
  21. /**
  22. * @dataProvider provideFixCases
  23. */
  24. public function testFix(string $expected, ?string $input = null): void
  25. {
  26. $this->doTest($expected, $input);
  27. }
  28. /**
  29. * @dataProvider provideFixCases
  30. */
  31. public function testFixWithSpacesInEmptyForExpressions(string $expected, ?string $input = null): void
  32. {
  33. $this->fixer->configure([
  34. 'remove_in_empty_for_expressions' => false,
  35. ]);
  36. $this->doTest($expected, $input);
  37. }
  38. public static function provideFixCases(): iterable
  39. {
  40. yield [
  41. '<?php
  42. test1();
  43. $a; // test
  44. ',
  45. ];
  46. yield [
  47. '<?php test2();',
  48. ];
  49. yield [
  50. '<?php test3(); ',
  51. ];
  52. yield [
  53. '<?php test4(); ',
  54. ];
  55. yield [
  56. '<?php
  57. test5(); // test
  58. ',
  59. ];
  60. yield [
  61. '<?php test6(); /* */ //',
  62. ];
  63. yield [
  64. '<?php test7a(); /* */',
  65. '<?php test7a();/* */',
  66. ];
  67. yield [
  68. '<?php test7b(); /* *//**/',
  69. '<?php test7b();/* *//**/',
  70. ];
  71. yield [
  72. '<?php
  73. test8(); $a = 4;
  74. ',
  75. '<?php
  76. test8(); $a = 4;
  77. ',
  78. ];
  79. yield [
  80. '<?php
  81. test9(); $b = 7;
  82. ',
  83. '<?php
  84. test9();$b = 7;
  85. ',
  86. ];
  87. yield [
  88. '<?php
  89. for (; ;) {
  90. }
  91. ',
  92. '<?php
  93. for (;;) {
  94. }
  95. ',
  96. ];
  97. yield [
  98. '<?php
  99. for (; ; ++$u1) {
  100. }
  101. ',
  102. '<?php
  103. for (;;++$u1) {
  104. }
  105. ',
  106. ];
  107. yield [
  108. '<?php
  109. for (; $u2 < 0;) {
  110. }
  111. ',
  112. '<?php
  113. for (;$u2 < 0;) {
  114. }
  115. ',
  116. ];
  117. yield [
  118. '<?php
  119. for (; $u3 < 3; ++$u3) {
  120. }
  121. ',
  122. '<?php
  123. for (;$u3 < 3;++$u3) {
  124. }
  125. ',
  126. ];
  127. yield [
  128. '<?php
  129. for ($u4 = 0; ;) {
  130. }
  131. ',
  132. '<?php
  133. for ($u4 = 0;;) {
  134. }
  135. ',
  136. ];
  137. yield [
  138. '<?php
  139. for ($u5 = 0; ; ++$u5) {
  140. }
  141. ',
  142. '<?php
  143. for ($u5 = 0;;++$u5) {
  144. }
  145. ',
  146. ];
  147. yield [
  148. '<?php
  149. for ($u6 = 0; $u6 < 6;) {
  150. }
  151. ',
  152. '<?php
  153. for ($u6 = 0;$u6 < 6;) {
  154. }
  155. ',
  156. ];
  157. yield [
  158. '<?php
  159. for ($u7 = 0; $u7 < 7; ++$u7) {
  160. }
  161. ',
  162. '<?php
  163. for ($u7 = 0;$u7 < 7;++$u7) {
  164. }
  165. ',
  166. ];
  167. yield [
  168. '<?php
  169. for (; ; ) {
  170. }
  171. ',
  172. '<?php
  173. for (; ; ) {
  174. }
  175. ',
  176. ];
  177. yield [
  178. '<?php
  179. for (; ; ++$u1) {
  180. }
  181. ',
  182. '<?php
  183. for (; ; ++$u1) {
  184. }
  185. ',
  186. ];
  187. yield [
  188. '<?php
  189. for (; $u2 < 0; ) {
  190. }
  191. ',
  192. '<?php
  193. for (; $u2 < 0; ) {
  194. }
  195. ',
  196. ];
  197. yield [
  198. '<?php
  199. for (; $u3 < 3; ++$u3) {
  200. }
  201. ',
  202. '<?php
  203. for (; $u3 < 3; ++$u3) {
  204. }
  205. ',
  206. ];
  207. yield [
  208. '<?php
  209. for ($ui4 = 0; ; ) {
  210. }
  211. ',
  212. '<?php
  213. for ($ui4 = 0; ; ) {
  214. }
  215. ',
  216. ];
  217. yield [
  218. '<?php
  219. for ($u5 = 0; ; ++$u5) {
  220. }
  221. ',
  222. '<?php
  223. for ($u5 = 0; ; ++$u5) {
  224. }
  225. ',
  226. ];
  227. yield [
  228. '<?php
  229. for ($u6 = 0; $u6 < 6; ) {
  230. }
  231. ',
  232. '<?php
  233. for ($u6 = 0; $u6 < 6; ) {
  234. }
  235. ',
  236. ];
  237. yield [
  238. '<?php
  239. for ($u7 = 0; $u7 < 7; ++$u7) {
  240. }
  241. ',
  242. '<?php
  243. for ($u7 = 0; $u7 < 7; ++$u7) {
  244. }
  245. ',
  246. ];
  247. yield [
  248. '<?php if ($a):?>
  249. 1
  250. <?php endif; ?>
  251. <?php if ($b):?>
  252. 2
  253. <?php endif; ?>
  254. <?php if ($c):?>
  255. 3
  256. <?php endif; ?>',
  257. '<?php if ($a):?>
  258. 1
  259. <?php endif;?>
  260. <?php if ($b):?>
  261. 2
  262. <?php endif;?>
  263. <?php if ($c):?>
  264. 3
  265. <?php endif;?>',
  266. ];
  267. yield [
  268. '<?php echo 1; ; ; ; ; ; ; ; ;',
  269. '<?php echo 1;;;;;;;;;',
  270. ];
  271. }
  272. /**
  273. * @dataProvider provideFixWithoutSpacesInEmptyForExpressionsCases
  274. */
  275. public function testFixWithoutSpacesInEmptyForExpressions(string $expected, ?string $input = null): void
  276. {
  277. $this->fixer->configure([
  278. 'remove_in_empty_for_expressions' => true,
  279. ]);
  280. $this->doTest($expected, $input);
  281. }
  282. public static function provideFixWithoutSpacesInEmptyForExpressionsCases(): iterable
  283. {
  284. yield [
  285. '<?php
  286. test1();
  287. $a; // test
  288. ',
  289. ];
  290. yield [
  291. '<?php test2();',
  292. ];
  293. yield [
  294. '<?php test3(); ',
  295. ];
  296. yield [
  297. '<?php test4(); ',
  298. ];
  299. yield [
  300. '<?php
  301. test5(); // test
  302. ',
  303. ];
  304. yield [
  305. '<?php test6(); /* */ //',
  306. ];
  307. yield [
  308. '<?php test7a(); /* */',
  309. '<?php test7a();/* */',
  310. ];
  311. yield [
  312. '<?php test7b(); /* *//**/',
  313. '<?php test7b();/* *//**/',
  314. ];
  315. yield [
  316. '<?php
  317. test8(); $a = 4;
  318. ',
  319. '<?php
  320. test8(); $a = 4;
  321. ',
  322. ];
  323. yield [
  324. '<?php
  325. test9(); $b = 7;
  326. ',
  327. '<?php
  328. test9();$b = 7;
  329. ',
  330. ];
  331. yield [
  332. '<?php
  333. for (;;) {
  334. }
  335. ',
  336. '<?php
  337. for (; ;) {
  338. }
  339. ',
  340. ];
  341. yield [
  342. '<?php
  343. for (;; ++$u1) {
  344. }
  345. ',
  346. '<?php
  347. for (;;++$u1) {
  348. }
  349. ',
  350. ];
  351. yield [
  352. '<?php
  353. for (; $u2 < 0;) {
  354. }
  355. ',
  356. '<?php
  357. for (;$u2 < 0;) {
  358. }
  359. ',
  360. ];
  361. yield [
  362. '<?php
  363. for (; $u3 < 3; ++$u3) {
  364. }
  365. ',
  366. '<?php
  367. for (;$u3 < 3;++$u3) {
  368. }
  369. ',
  370. ];
  371. yield [
  372. '<?php
  373. for ($u4 = 0;;) {
  374. }
  375. ',
  376. '<?php
  377. for ($u4 = 0; ;) {
  378. }
  379. ',
  380. ];
  381. yield [
  382. '<?php
  383. for ($u5 = 0;; ++$u5) {
  384. }
  385. ',
  386. '<?php
  387. for ($u5 = 0;;++$u5) {
  388. }
  389. ',
  390. ];
  391. yield [
  392. '<?php
  393. for ($u6 = 0; $u6 < 6;) {
  394. }
  395. ',
  396. '<?php
  397. for ($u6 = 0;$u6 < 6;) {
  398. }
  399. ',
  400. ];
  401. yield [
  402. '<?php
  403. for ($u7 = 0; $u7 < 7; ++$u7) {
  404. }
  405. ',
  406. '<?php
  407. for ($u7 = 0;$u7 < 7;++$u7) {
  408. }
  409. ',
  410. ];
  411. yield [
  412. '<?php
  413. for (;;) {
  414. }
  415. ',
  416. '<?php
  417. for (; ; ) {
  418. }
  419. ',
  420. ];
  421. yield [
  422. '<?php
  423. for (;; ++$u1) {
  424. }
  425. ',
  426. '<?php
  427. for (; ; ++$u1) {
  428. }
  429. ',
  430. ];
  431. yield [
  432. '<?php
  433. for (; $u2 < 0;) {
  434. }
  435. ',
  436. '<?php
  437. for (; $u2 < 0; ) {
  438. }
  439. ',
  440. ];
  441. yield [
  442. '<?php
  443. for (; $u3 < 3; ++$u3) {
  444. }
  445. ',
  446. '<?php
  447. for (; $u3 < 3; ++$u3) {
  448. }
  449. ',
  450. ];
  451. yield [
  452. '<?php
  453. for ($ui4 = 0;;) {
  454. }
  455. ',
  456. '<?php
  457. for ($ui4 = 0; ; ) {
  458. }
  459. ',
  460. ];
  461. yield [
  462. '<?php
  463. for ($u5 = 0;; ++$u5) {
  464. }
  465. ',
  466. '<?php
  467. for ($u5 = 0; ; ++$u5) {
  468. }
  469. ',
  470. ];
  471. yield [
  472. '<?php
  473. for ($u6 = 0; $u6 < 6;) {
  474. }
  475. ',
  476. '<?php
  477. for ($u6 = 0; $u6 < 6; ) {
  478. }
  479. ',
  480. ];
  481. yield [
  482. '<?php
  483. for ($u7 = 0; $u7 < 7; ++$u7) {
  484. }
  485. ',
  486. '<?php
  487. for ($u7 = 0; $u7 < 7; ++$u7) {
  488. }
  489. ',
  490. ];
  491. yield [
  492. '<?php
  493. for (
  494. $u7 = 0;
  495. ;
  496. ++$u7
  497. ) {
  498. }
  499. ',
  500. ];
  501. yield [
  502. '<?php for ( /* foo */ ; /* bar */ ; /* baz */ ) { }',
  503. ];
  504. }
  505. public function testHaltCompiler(): void
  506. {
  507. $this->doTest('<?php
  508. __HALT_COMPILER();
  509. ');
  510. }
  511. }