From 07b86e9d4a82a725bfc309f86971bc2a0ff5c41c Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Sun, 26 Oct 2025 12:01:12 +0100 Subject: [PATCH 1/2] failing test --- .../data/data-provider-trimming-args.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/Rules/PHPUnit/data/data-provider-trimming-args.php b/tests/Rules/PHPUnit/data/data-provider-trimming-args.php index 60fc7cf4..231d3f52 100644 --- a/tests/Rules/PHPUnit/data/data-provider-trimming-args.php +++ b/tests/Rules/PHPUnit/data/data-provider-trimming-args.php @@ -30,3 +30,37 @@ public function testProvide2(int $i): void } } + +class BarTest extends TestCase +{ + + /** + * @return array> + */ + public function getData(): array + { + return []; + } + + public function dataProvide(): array + { + return $this->getData(); + } + + /** + * @dataProvider dataProvide + */ + public function testProvide(string ...$arg): void + { + + } + + /** + * @dataProvider dataProvide + */ + public function testProvide2(string $arg): void + { + + } + +} From eaf693336783f4003aa7ac69cf4e697ecc5a94e7 Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Sun, 26 Oct 2025 14:06:12 +0100 Subject: [PATCH 2/2] fix --- src/Rules/PHPUnit/DataProviderDataRule.php | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Rules/PHPUnit/DataProviderDataRule.php b/src/Rules/PHPUnit/DataProviderDataRule.php index e241053e..45a7fa16 100644 --- a/src/Rules/PHPUnit/DataProviderDataRule.php +++ b/src/Rules/PHPUnit/DataProviderDataRule.php @@ -84,15 +84,20 @@ public function processNode(Node $node, Scope $scope): array return []; } - $maxNumberOfParameters = $testsWithProvider[0]->getNumberOfParameters(); - if (count($testsWithProvider) > 1) { - foreach ($testsWithProvider as $testMethod) { - if ($testMethod->isVariadic()) { - $maxNumberOfParameters = PHP_INT_MAX; - break; - } + $maxNumberOfParameters = null; + foreach ($testsWithProvider as $testMethod) { + $num = $testMethod->getNumberOfParameters(); + if ($testMethod->isVariadic()) { + $num = PHP_INT_MAX; + } + if ($maxNumberOfParameters === null) { + $maxNumberOfParameters = $num; + continue; + } - $maxNumberOfParameters = max($maxNumberOfParameters, $testMethod->getNumberOfParameters()); + $maxNumberOfParameters = max($maxNumberOfParameters, $num); + if ($num === PHP_INT_MAX) { + break; } } @@ -100,7 +105,7 @@ public function processNode(Node $node, Scope $scope): array $numberOfParameters = $testMethod->getNumberOfParameters(); foreach ($arraysTypes as [$startLine, $arraysType]) { - $args = $this->arrayItemsToArgs($arraysType, $maxNumberOfParameters); + $args = $this->arrayItemsToArgs($arraysType, $numberOfParameters); if ($args === null) { continue; }