123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Fixer\StringNotation;
- use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
- /**
- * @internal
- *
- * @covers \PhpCsFixer\Fixer\StringNotation\HeredocClosingMarkerFixer
- *
- * @extends AbstractFixerTestCase<\PhpCsFixer\Fixer\StringNotation\HeredocClosingMarkerFixer>
- *
- * @phpstan-import-type _AutogeneratedInputConfiguration from \PhpCsFixer\Fixer\StringNotation\HeredocClosingMarkerFixer
- */
- final class HeredocClosingMarkerFixerTest extends AbstractFixerTestCase
- {
- /**
- * @param _AutogeneratedInputConfiguration $config
- *
- * @dataProvider provideFixCases
- */
- public function testFix(string $expected, ?string $input = null, array $config = []): void
- {
- $this->fixer->configure($config);
- $this->doTest($expected, $input);
- }
- /**
- * @return iterable<array{0: string, 1?: null|string, 2?: array<string, mixed>}>
- */
- public static function provideFixCases(): iterable
- {
- yield 'heredoc' => [
- <<<'PHP'
- <?php $a = <<<EOD
- xxx EOD xxx
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- xxx EOD xxx
- TEST;
- PHP,
- ];
- yield 'nowdoc' => [
- <<<'PHP'
- <?php $a = <<<'EOD'
- xxx EOD xxx
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = <<<'TEST'
- xxx EOD xxx
- TEST;
- PHP,
- ];
- yield 'heredoc /w custom preferred closing marker' => [
- <<<'PHP'
- <?php $a = <<<EOF
- xxx
- EOF;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- xxx
- TEST;
- PHP,
- ['closing_marker' => 'EOF'],
- ];
- yield 'heredoc /w custom explicit style' => [
- <<<'PHP'
- <?php $a = <<<"EOD"
- xxx
- EOD;
- $b = <<<"EOD"
- xxx2
- EOD;
- $b = <<<'EOD'
- xxx3
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- xxx
- TEST;
- $b = <<<"TEST"
- xxx2
- TEST;
- $b = <<<'TEST'
- xxx3
- TEST;
- PHP,
- ['explicit_heredoc_style' => true],
- ];
- yield 'heredoc /w b' => [
- <<<'PHP'
- <?php $a = b<<<EOD
- xxx EOD xxx
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = b<<<TEST
- xxx EOD xxx
- TEST;
- PHP,
- ];
- yield 'heredoc /w B' => [
- <<<'PHP'
- <?php $a = B<<<EOD
- xxx EOD xxx
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = B<<<TEST
- xxx EOD xxx
- TEST;
- PHP,
- ];
- yield 'heredoc and reserved closing marker' => [
- <<<'PHP_'
- <?php $a = <<<PHP
- xxx
- PHP;
- PHP_,
- ];
- yield 'heredoc and reserved closing marker - different case' => [
- <<<'PHP_'
- <?php $a = <<<PHP
- xxx
- PHP;
- $a = <<<PHP
- PHP;
- PHP_,
- <<<'PHP'
- <?php $a = <<<php
- xxx
- php;
- $a = <<<Php
- Php;
- PHP,
- ];
- yield 'heredoc and reserved custom closing marker' => [
- <<<'PHP'
- <?php $a = <<<Žlutý
- xxx
- Žlutý;
- $aNormCase = <<<Žlutý
- xxx
- Žlutý;
- $aNormCase = <<<Žlutý
- xxx
- Žlutý;
- $b = <<<EOD
- xxx2
- EOD;
- $c = <<<EOD
- xxx3
- EOD;
- PHP,
- <<<'PHP_'
- <?php $a = <<<Žlutý
- xxx
- Žlutý;
- $aNormCase = <<<ŽluTý
- xxx
- ŽluTý;
- $aNormCase = <<<ŽLUTÝ
- xxx
- ŽLUTÝ;
- $b = <<<Žlutý2
- xxx2
- Žlutý2;
- $c = <<<PHP
- xxx3
- PHP;
- PHP_,
- ['reserved_closing_markers' => ['Žlutý']],
- ];
- yield 'no longer colliding reserved marker recovery' => [
- <<<'PHP'
- <?php
- $a = <<<CSS
- CSS;
- $a = <<<CSS
- CSS;
- $a = <<<CSS_
- CSS
- CSS_;
- $a = <<<CSS
- CSS_
- CSS;
- PHP,
- <<<'PHP'
- <?php
- $a = <<<CSS_
- CSS_;
- $a = <<<CSS__
- CSS__;
- $a = <<<CSS__
- CSS
- CSS__;
- $a = <<<CSS__
- CSS_
- CSS__;
- PHP,
- ];
- yield 'heredoc /w content starting with preferred closing marker' => [
- <<<'PHP'
- <?php $a = <<<EOD_
- EOD xxx
- EOD_;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- EOD xxx
- TEST;
- PHP,
- ];
- yield 'heredoc /w content starting with whitespace and preferred closing marker' => [
- <<<'PHP'
- <?php $a = <<<EOD_
- EOD xxx
- EOD_;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- EOD xxx
- TEST;
- PHP,
- ];
- yield 'heredoc /w content starting with preferred closing marker and single quote' => [
- <<<'PHP'
- <?php $a = <<<EOD_
- EOD'
- EOD_;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- EOD'
- TEST;
- PHP,
- ];
- yield 'heredoc /w content starting with preferred closing marker and semicolon' => [
- <<<'PHP'
- <?php $a = <<<EOD_
- EOD;
- EOD_;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- EOD;
- TEST;
- PHP,
- ];
- yield 'heredoc /w content ending with preferred closing marker' => [
- <<<'PHP'
- <?php $a = <<<EOD
- xxx EOD
- EOD;
- PHP,
- <<<'PHP'
- <?php $a = <<<TEST
- xxx EOD
- TEST;
- PHP,
- ];
- }
- }
|