Skip to content

Commit 9a3deed

Browse files
committed
Fix changing keys of data providers for tests with optional arguments
1 parent c9cbc66 commit 9a3deed

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\PHPUnit110\Rector\MethodCall\NamedArgumentForDataProviderRector\Fixture;
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
final class TestWithOptionalArguments extends TestCase
8+
{
9+
public static function dataProvider(): Generator
10+
{
11+
yield [
12+
'keyA' => false,
13+
'keyC' => true,
14+
];
15+
}
16+
17+
#[\PHPUnit\Framework\Attributes\DataProvider('dataProvider')]
18+
public function testFilter(bool $keyA, bool $keyB = false, bool $keyC = false): void
19+
{
20+
}
21+
}
22+
?>
23+
-----
24+
<?php
25+
26+
namespace Rector\PHPUnit\Tests\PHPUnit110\Rector\MethodCall\NamedArgumentForDataProviderRector\Fixture;
27+
28+
use PHPUnit\Framework\TestCase;
29+
30+
final class TestWithOptionalArguments extends TestCase
31+
{
32+
public static function dataProvider(): Generator
33+
{
34+
yield [
35+
'keyA' => false,
36+
'keyC' => true,
37+
];
38+
}
39+
40+
#[\PHPUnit\Framework\Attributes\DataProvider('dataProvider')]
41+
public function testFilter(bool $keyA, bool $keyB = false, bool $keyC = false): void
42+
{
43+
}
44+
}
45+
?>

‎rules/PHPUnit110/Rector/Class_/NamedArgumentForDataProviderRector.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,11 @@ private function refactorArrayKey(Array_ $array, array $dataProviderNameMapping)
239239
return false;
240240
}
241241

242+
// Skip already named arguments - optional parameters can be left out
243+
if ($allArrayKeyNames !== [] && array_diff($allArrayKeyNames, $dataProviderNameMapping) === []) {
244+
return false;
245+
}
246+
242247
foreach ($array->items as $arrayIndex => $arrayItem) {
243248
if (! isset($dataProviderNameMapping[$arrayIndex])) {
244249
continue;

0 commit comments

Comments
 (0)