Skip to content

Commit 41acc04

Browse files
committed
Failing test - args trimming logic needs some work
1 parent 21740cb commit 41acc04

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

tests/Rules/PHPUnit/DataProviderDataRuleTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,44 @@ public function testRule(): void
190190
]);
191191
}
192192

193+
public function testVariadicMethod(): void
194+
{
195+
$this->analyse([__DIR__ . '/data/data-provider-variadic-method.php'], [
196+
[
197+
'Method DataProviderVariadicMethod\FooTest::testProvide2() invoked with 1 parameter, at least 2 required.',
198+
12,
199+
],
200+
[
201+
'Parameter #1 $a of method DataProviderVariadicMethod\FooTest::testProvide() expects int, string given.',
202+
13,
203+
],
204+
[
205+
'Method DataProviderVariadicMethod\FooTest::testProvide2() invoked with 1 parameter, at least 2 required.',
206+
13,
207+
],
208+
[
209+
'Parameter #1 $a of method DataProviderVariadicMethod\FooTest::testProvide2() expects int, string given.',
210+
13,
211+
],
212+
[
213+
'Parameter #2 ...$rest of method DataProviderVariadicMethod\FooTest::testProvide() expects string, int given.',
214+
15,
215+
],
216+
[
217+
'Parameter #3 ...$rest of method DataProviderVariadicMethod\FooTest::testProvide() expects string, int given.',
218+
15,
219+
],
220+
[
221+
'Parameter #2 $two of method DataProviderVariadicMethod\FooTest::testProvide2() expects string, int given.',
222+
15,
223+
],
224+
[
225+
'Parameter #3 ...$rest of method DataProviderVariadicMethod\FooTest::testProvide2() expects string, int given.',
226+
15,
227+
],
228+
]);
229+
}
230+
193231
/**
194232
* @return string[]
195233
*/
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace DataProviderVariadicMethod;
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
class FooTest extends TestCase
8+
{
9+
10+
public function dataProvide(): iterable
11+
{
12+
yield [1];
13+
yield ['foo'];
14+
yield [1, 'foo', 'bar'];
15+
yield [1, 2, 3];
16+
}
17+
18+
/**
19+
* @dataProvider dataProvide
20+
*/
21+
public function testProvide(int $a, string ...$rest): void
22+
{
23+
24+
}
25+
26+
/**
27+
* @dataProvider dataProvide
28+
*/
29+
public function testProvide2(int $a, string $two, string ...$rest): void
30+
{
31+
32+
}
33+
34+
}
35+
36+
class BarTest extends TestCase
37+
{
38+
39+
public function dataProvide(): iterable
40+
{
41+
yield [1, 2];
42+
yield [3, 4];
43+
}
44+
45+
/**
46+
* @dataProvider dataProvide
47+
*/
48+
public function testProvide(int $i): void
49+
{
50+
51+
}
52+
53+
/**
54+
* @dataProvider dataProvide
55+
*/
56+
public function testProvide2(int ...$args): void
57+
{
58+
59+
}
60+
61+
}

0 commit comments

Comments
 (0)