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; } 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 + { + + } + +}