@@ -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