Просмотр исходного кода

fix: Do not mark with `@coversNothing` if `CoversMethod`/`CoversFunction` attribute is used (#8268)

Marius Posthumus 3 месяцев назад
Родитель
Сommit
9dc423778d

+ 2 - 0
src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php

@@ -80,6 +80,8 @@ final class MyTest extends \PHPUnit_Framework_TestCase
             [
                 'phpunit\framework\attributes\coversclass',
                 'phpunit\framework\attributes\coversnothing',
+                'phpunit\framework\attributes\coversmethod',
+                'phpunit\framework\attributes\coversfunction',
             ],
         );
     }

+ 90 - 0
tests/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixerTest.php

@@ -394,6 +394,96 @@ class FooTest extends \PHPUnit_Framework_TestCase {}
                 final class FooTest extends \PHPUnit_Framework_TestCase {}
                 PHP,
         ];
+
+        yield 'already with attribute CoversMethod' => [
+            <<<'PHP'
+                <?php
+                #[PHPUnit\Framework\Attributes\CoversMethod(Foo::class, 'bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with imported CoversMethod attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\TestCase;
+                use PHPUnit\Framework\Attributes\CoversMethod;
+                #[CoversMethod(Foo::class, 'bar')]
+                class FooTest extends TestCase {}
+                PHP,
+        ];
+
+        yield 'already with partially imported CoversMethod attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes;
+                #[Attributes\CoversMethod(Foo::class, 'bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with aliased CoversMethod attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes\CoversMethod as PHPUnitCoversMethod;
+                #[PHPUnitCoversMethod(Foo::class, 'bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with partially aliased CoversMethod attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes as PHPUnitAttributes;
+                #[PHPUnitAttributes\CoversMethod(Foo::class, 'bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with attribute CoversFunction' => [
+            <<<'PHP'
+                <?php
+                #[PHPUnit\Framework\Attributes\CoversFunction('bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with imported CoversFunction attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\TestCase;
+                use PHPUnit\Framework\Attributes\CoversFunction;
+                #[CoversFunction('bar')]
+                class FooTest extends TestCase {}
+                PHP,
+        ];
+
+        yield 'already with partially imported CoversFunction attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes;
+                #[Attributes\CoversFunction('bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with aliased CoversFunction attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes\CoversFunction as PHPUnitCoversFunction;
+                #[PHPUnitCoversFunction('bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
+
+        yield 'already with partially aliased CoversFunction attribute' => [
+            <<<'PHP'
+                <?php
+                use PHPUnit\Framework\Attributes as PHPUnitAttributes;
+                #[PHPUnitAttributes\CoversFunction('bar')]
+                class FooTest extends \PHPUnit_Framework_TestCase {}
+                PHP,
+        ];
     }
 
     /**