From 3a0babe8f80f2bc4428def0c4ae009cac9b8df83 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 12 Mar 2026 15:46:07 +0700 Subject: [PATCH 1/2] [CodeQuality] Skip test method via #[Test] Attribute --- ...kip_test_method_via_test_attribute.php.inc | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector/Fixture/skip_test_method_via_test_attribute.php.inc diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector/Fixture/skip_test_method_via_test_attribute.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector/Fixture/skip_test_method_via_test_attribute.php.inc new file mode 100644 index 00000000..c04dd674 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector/Fixture/skip_test_method_via_test_attribute.php.inc @@ -0,0 +1,32 @@ +expects($invokedCount) + ->method('processFiles') + ->willReturnCallback(function (array $parameters) use ($invokedCount): array { + switch ($invokedCount->numberOfInvocations()) { + case 1: + self::assertSame(range(1, 250), $parameters); + + return [233, [], []]; + case 2: + self::assertSame(range(251, 500), $parameters); + + return [15, [], []]; + + default: + throw new \OutOfBoundsException('Did not expect this to run thrice.'); + } + }); + } +} From 25c9aaf0756558e9d71df75ccfeadc4538ec5028 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 12 Mar 2026 15:48:40 +0700 Subject: [PATCH 2/2] fix --- .../ClassMethod/DataProviderArrayItemsNewLinedRector.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php b/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php index 1f6cfa44..36db7a4c 100644 --- a/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php +++ b/rules/CodeQuality/Rector/ClassMethod/DataProviderArrayItemsNewLinedRector.php @@ -9,7 +9,9 @@ use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Return_; use Rector\NodeTypeResolver\Node\AttributeKey; +use Rector\Php80\NodeAnalyzer\PhpAttributeAnalyzer; use Rector\PhpParser\Node\BetterNodeFinder; +use Rector\PHPUnit\Enum\PHPUnitAttribute; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -22,7 +24,8 @@ final class DataProviderArrayItemsNewLinedRector extends AbstractRector { public function __construct( private readonly TestsNodeAnalyzer $testsNodeAnalyzer, - private readonly BetterNodeFinder $betterNodeFinder + private readonly BetterNodeFinder $betterNodeFinder, + private readonly PhpAttributeAnalyzer $phpAttributeAnalyzer ) { } @@ -96,7 +99,8 @@ public function refactor(Node $node): ?Node } // skip test methods - if (str_starts_with($node->name->toString(), 'test')) { + if (str_starts_with($node->name->toString(), 'test') + || $this->phpAttributeAnalyzer->hasPhpAttribute($node, PHPUnitAttribute::TEST)) { return null; }