Skip to content

Commit 58461d7

Browse files
committed
more fixes
1 parent 534694d commit 58461d7

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/Rules/PHPUnit/DataProviderDataRule.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,32 +85,37 @@ public function processNode(Node $node, Scope $scope): array
8585
}
8686

8787
$trimArgs = false;
88+
$maxNumberOfParameters = $testsWithProvider[0]->getNumberOfParameters();
8889
if (count($testsWithProvider) > 1) {
89-
$maxNumberOfParameters = $testsWithProvider[0]->getNumberOfParameters();
9090
foreach ($testsWithProvider as $testMethod) {
91-
if ($testMethod->isVariadic()) {
91+
if ($maxNumberOfParameters !== $testMethod->getNumberOfParameters()) {
9292
$trimArgs = true;
93-
break;
9493
}
9594

96-
if ($maxNumberOfParameters !== $testMethod->getNumberOfParameters()) {
95+
if ($testMethod->isVariadic()) {
9796
$trimArgs = true;
98-
break;
97+
$maxNumberOfParameters = PHP_INT_MAX;
9998
}
99+
100+
$maxNumberOfParameters = max($maxNumberOfParameters, $testMethod->getNumberOfParameters());
100101
}
101102
}
102103

103104
foreach ($testsWithProvider as $testMethod) {
104105
$numberOfParameters = $testMethod->getNumberOfParameters();
105106

106107
foreach ($arraysTypes as [$startLine, $arraysType]) {
107-
$args = $this->arrayItemsToArgs($arraysType, $numberOfParameters);
108+
$args = $this->arrayItemsToArgs($arraysType, $maxNumberOfParameters);
108109
if ($args === null) {
109110
continue;
110111
}
111112

112-
if (!$testMethod->isVariadic() && $trimArgs) {
113-
$args = array_slice($args, 0, $numberOfParameters);
113+
if (
114+
$trimArgs
115+
&& !$testMethod->isVariadic()
116+
&& $numberOfParameters !== $maxNumberOfParameters
117+
) {
118+
$args = array_slice($args, 0, min($numberOfParameters, $maxNumberOfParameters));
114119
}
115120

116121
$scope->invokeNodeCallback(new Node\Expr\MethodCall(

0 commit comments

Comments
 (0)