HeredocToNowdocFixerTest.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  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\StringNotation;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Gregor Harlan <gharlan@web.de>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\StringNotation\HeredocToNowdocFixer
  20. *
  21. * @extends AbstractFixerTestCase<\PhpCsFixer\Fixer\StringNotation\HeredocToNowdocFixer>
  22. */
  23. final class HeredocToNowdocFixerTest extends AbstractFixerTestCase
  24. {
  25. /**
  26. * @dataProvider provideFixCases
  27. */
  28. public function testFix(string $expected, ?string $input = null): void
  29. {
  30. $this->doTest($expected, $input);
  31. }
  32. /**
  33. * @return iterable<array{0: string, 1?: string}>
  34. */
  35. public static function provideFixCases(): iterable
  36. {
  37. yield [
  38. <<<'EOF'
  39. <?php $a = <<<'TEST'
  40. Foo $bar \n
  41. TEST;
  42. EOF,
  43. ];
  44. yield [
  45. <<<'EOF'
  46. <?php $a = <<<'TEST'
  47. TEST;
  48. EOF,
  49. <<<'EOF'
  50. <?php $a = <<<TEST
  51. TEST;
  52. EOF,
  53. ];
  54. yield [
  55. <<<'EOF'
  56. <?php $a = <<<'TEST'
  57. Foo \\ $bar \n
  58. TEST;
  59. EOF,
  60. <<<'EOF'
  61. <?php $a = <<<TEST
  62. Foo \\\\ \$bar \\n
  63. TEST;
  64. EOF,
  65. ];
  66. yield [
  67. <<<'EOF'
  68. <?php $a = <<<'TEST'
  69. Foo
  70. TEST;
  71. EOF,
  72. <<<'EOF'
  73. <?php $a = <<<"TEST"
  74. Foo
  75. TEST;
  76. EOF,
  77. ];
  78. yield [
  79. <<<'EOF'
  80. <?php $a = <<<TEST
  81. Foo $bar
  82. TEST;
  83. EOF,
  84. ];
  85. yield [
  86. <<<'EOF'
  87. <?php $a = <<<TEST
  88. Foo \\$bar
  89. TEST;
  90. EOF,
  91. ];
  92. yield [
  93. <<<'EOF'
  94. <?php $a = <<<TEST
  95. Foo \n $bar
  96. TEST;
  97. EOF,
  98. ];
  99. yield [
  100. <<<'EOF'
  101. <?php $a = <<<TEST
  102. Foo \x00 $bar
  103. TEST;
  104. EOF,
  105. ];
  106. yield [
  107. <<<'EOF'
  108. <?php
  109. $html = <<< 'HTML'
  110. a
  111. HTML;
  112. EOF,
  113. <<<'EOF'
  114. <?php
  115. $html = <<< HTML
  116. a
  117. HTML;
  118. EOF,
  119. ];
  120. yield [
  121. <<<'EOF'
  122. <?php $a = <<< 'TEST'
  123. Foo
  124. TEST;
  125. EOF,
  126. <<<'EOF'
  127. <?php $a = <<< "TEST"
  128. Foo
  129. TEST;
  130. EOF,
  131. ];
  132. yield [
  133. <<<EOF
  134. <?php echo <<<'TEST'\r\nFoo\r\nTEST;
  135. EOF,
  136. <<<EOF
  137. <?php echo <<<TEST\r\nFoo\r\nTEST;
  138. EOF,
  139. ];
  140. yield [
  141. <<<'EOF'
  142. <?php $a = b<<<'TEST'
  143. Foo $bar \n
  144. TEST;
  145. EOF,
  146. ];
  147. yield [
  148. <<<'EOF'
  149. <?php $a = b<<<'TEST'
  150. TEST;
  151. EOF,
  152. <<<'EOF'
  153. <?php $a = b<<<TEST
  154. TEST;
  155. EOF,
  156. ];
  157. yield [
  158. <<<'EOF'
  159. <?php $a = b<<<'TEST'
  160. Foo \\ $bar \n
  161. TEST;
  162. EOF,
  163. <<<'EOF'
  164. <?php $a = b<<<TEST
  165. Foo \\\\ \$bar \\n
  166. TEST;
  167. EOF,
  168. ];
  169. yield [
  170. <<<'EOF'
  171. <?php $a = b<<<'TEST'
  172. Foo
  173. TEST;
  174. EOF,
  175. <<<'EOF'
  176. <?php $a = b<<<"TEST"
  177. Foo
  178. TEST;
  179. EOF,
  180. ];
  181. yield [
  182. <<<'EOF'
  183. <?php $a = b<<<TEST
  184. Foo $bar
  185. TEST;
  186. EOF,
  187. ];
  188. yield [
  189. <<<'EOF'
  190. <?php $a = b<<<TEST
  191. Foo \\$bar
  192. TEST;
  193. EOF,
  194. ];
  195. yield [
  196. <<<'EOF'
  197. <?php $a = b<<<TEST
  198. Foo \n $bar
  199. TEST;
  200. EOF,
  201. ];
  202. yield [
  203. <<<'EOF'
  204. <?php $a = b<<<TEST
  205. Foo \x00 $bar
  206. TEST;
  207. EOF,
  208. ];
  209. yield [
  210. <<<'EOF'
  211. <?php
  212. $html = b<<< 'HTML'
  213. a
  214. HTML;
  215. EOF,
  216. <<<'EOF'
  217. <?php
  218. $html = b<<< HTML
  219. a
  220. HTML;
  221. EOF,
  222. ];
  223. yield [
  224. <<<'EOF'
  225. <?php $a = b<<< 'TEST'
  226. Foo
  227. TEST;
  228. EOF,
  229. <<<'EOF'
  230. <?php $a = b<<< "TEST"
  231. Foo
  232. TEST;
  233. EOF,
  234. ];
  235. yield [
  236. <<<EOF
  237. <?php echo b<<<'TEST'\r\nFoo\r\nTEST;
  238. EOF,
  239. <<<EOF
  240. <?php echo b<<<TEST\r\nFoo\r\nTEST;
  241. EOF,
  242. ];
  243. yield [
  244. <<<'EOF'
  245. <?php $a = B<<<'TEST'
  246. Foo $bar \n
  247. TEST;
  248. EOF,
  249. ];
  250. yield [
  251. <<<'EOF'
  252. <?php $a = B<<<'TEST'
  253. TEST;
  254. EOF,
  255. <<<'EOF'
  256. <?php $a = B<<<TEST
  257. TEST;
  258. EOF,
  259. ];
  260. yield [
  261. <<<'EOF'
  262. <?php $a = B<<<'TEST'
  263. Foo \\ $bar \n
  264. TEST;
  265. EOF,
  266. <<<'EOF'
  267. <?php $a = B<<<TEST
  268. Foo \\\\ \$bar \\n
  269. TEST;
  270. EOF,
  271. ];
  272. yield [
  273. <<<'EOF'
  274. <?php $a = B<<<'TEST'
  275. Foo
  276. TEST;
  277. EOF,
  278. <<<'EOF'
  279. <?php $a = B<<<"TEST"
  280. Foo
  281. TEST;
  282. EOF,
  283. ];
  284. yield [
  285. <<<'EOF'
  286. <?php $a = B<<<TEST
  287. Foo $bar
  288. TEST;
  289. EOF,
  290. ];
  291. yield [
  292. <<<'EOF'
  293. <?php $a = B<<<TEST
  294. Foo \\$bar
  295. TEST;
  296. EOF,
  297. ];
  298. yield [
  299. <<<'EOF'
  300. <?php $a = B<<<TEST
  301. Foo \n $bar
  302. TEST;
  303. EOF,
  304. ];
  305. yield [
  306. <<<'EOF'
  307. <?php $a = B<<<TEST
  308. Foo \x00 $bar
  309. TEST;
  310. EOF,
  311. ];
  312. yield [
  313. <<<'EOF'
  314. <?php
  315. $html = B<<< 'HTML'
  316. a
  317. HTML;
  318. EOF,
  319. <<<'EOF'
  320. <?php
  321. $html = B<<< HTML
  322. a
  323. HTML;
  324. EOF,
  325. ];
  326. yield [
  327. <<<'EOF'
  328. <?php $a = B<<< 'TEST'
  329. Foo
  330. TEST;
  331. EOF,
  332. <<<'EOF'
  333. <?php $a = B<<< "TEST"
  334. Foo
  335. TEST;
  336. EOF,
  337. ];
  338. yield [
  339. <<<EOF
  340. <?php echo B<<<'TEST'\r\nFoo\r\nTEST;
  341. EOF,
  342. <<<EOF
  343. <?php echo B<<<TEST\r\nFoo\r\nTEST;
  344. EOF,
  345. ];
  346. }
  347. }