Skip to content

Commit 1320fc5

Browse files
authored
[depre] Deprecate RemoveDataProviderParamKeysRector as the keys can be useful to improve test readability (#584)
#469 (comment)
1 parent a083b2e commit 1320fc5

File tree

8 files changed

+10
-303
lines changed

8 files changed

+10
-303
lines changed

config/sets/phpunit-code-quality.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use Rector\PHPUnit\CodeQuality\Rector\Class_\ConstructClassMethodToSetUpTestCaseRector;
99
use Rector\PHPUnit\CodeQuality\Rector\Class_\NarrowUnusedSetUpDefinedPropertyRector;
1010
use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector;
11-
use Rector\PHPUnit\CodeQuality\Rector\Class_\RemoveDataProviderParamKeysRector;
1211
use Rector\PHPUnit\CodeQuality\Rector\Class_\SingleMockPropertyTypeRector;
1312
use Rector\PHPUnit\CodeQuality\Rector\Class_\TestWithToDataProviderRector;
1413
use Rector\PHPUnit\CodeQuality\Rector\Class_\TypeWillReturnCallableArrowFunctionRector;
@@ -69,9 +68,6 @@
6968
AssertEqualsOrAssertSameFloatParameterToSpecificMethodsTypeRector::class,
7069
DataProviderArrayItemsNewLinedRector::class,
7170

72-
// PHPUnit 11 reports warnings on typos + keys are rather noise than useful, fake system-keys for values
73-
RemoveDataProviderParamKeysRector::class,
74-
7571
FlipAssertRector::class,
7672

7773
// narrow with consecutive

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/Fixture/keep_dataset_description.php.inc

Lines changed: 0 additions & 51 deletions
This file was deleted.

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/Fixture/skip_nested_arrays.php.inc

Lines changed: 0 additions & 25 deletions
This file was deleted.

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/Fixture/some_data_provider.php.inc

Lines changed: 0 additions & 51 deletions
This file was deleted.

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/Fixture/some_data_provider_with_yields.php.inc

Lines changed: 0 additions & 47 deletions
This file was deleted.

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/RemoveDataProviderParamKeysRectorTest.php

Lines changed: 0 additions & 28 deletions
This file was deleted.

rules-tests/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector/config/configured_rule.php

Lines changed: 0 additions & 10 deletions
This file was deleted.

rules/CodeQuality/Rector/Class_/RemoveDataProviderParamKeysRector.php

Lines changed: 10 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,20 @@
55
namespace Rector\PHPUnit\CodeQuality\Rector\Class_;
66

77
use PhpParser\Node;
8-
use PhpParser\Node\Expr;
9-
use PhpParser\Node\Expr\Array_;
10-
use PhpParser\Node\Expr\Yield_;
118
use PhpParser\Node\Stmt\Class_;
12-
use PhpParser\Node\Stmt\Expression;
13-
use PhpParser\Node\Stmt\Return_;
14-
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
15-
use Rector\PHPUnit\NodeFinder\DataProviderClassMethodFinder;
9+
use Rector\Configuration\Deprecation\Contract\DeprecatedInterface;
10+
use Rector\Exception\ShouldNotHappenException;
1611
use Rector\Rector\AbstractRector;
1712
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1813
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1914

2015
/**
21-
* @see \Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\RemoveDataProviderParamKeysRector\RemoveDataProviderParamKeysRectorTest
16+
* @deprecated as the keys can be useful to improve test readability
17+
*
18+
* @see https://github.com/rectorphp/rector-phpunit/pull/469#issuecomment-3533161836
2219
*/
23-
final class RemoveDataProviderParamKeysRector extends AbstractRector
20+
final class RemoveDataProviderParamKeysRector extends AbstractRector implements DeprecatedInterface
2421
{
25-
public function __construct(
26-
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
27-
private readonly DataProviderClassMethodFinder $dataProviderClassMethodFinder,
28-
) {
29-
}
30-
3122
public function getRuleDefinition(): RuleDefinition
3223
{
3324
return new RuleDefinition('Remove data provider keys, that should match param names, as order is good enough', [
@@ -89,77 +80,9 @@ public function getNodeTypes(): array
8980
*/
9081
public function refactor(Node $node): ?Node
9182
{
92-
if (! $this->testsNodeAnalyzer->isInTestClass($node)) {
93-
return null;
94-
}
95-
96-
$dataProviderClassMethods = $this->dataProviderClassMethodFinder->find($node);
97-
$hasChanged = false;
98-
99-
foreach ($dataProviderClassMethods as $dataProviderClassMethod) {
100-
// 1. remove array keys
101-
foreach ((array) $dataProviderClassMethod->stmts as $classMethodStmt) {
102-
if (! $classMethodStmt instanceof Return_) {
103-
continue;
104-
}
105-
106-
if (! $classMethodStmt->expr instanceof Array_) {
107-
continue;
108-
}
109-
110-
$returnedArray = $classMethodStmt->expr;
111-
foreach ($returnedArray->items as $arrayItem) {
112-
if (! $arrayItem->value instanceof Array_) {
113-
continue;
114-
}
115-
116-
$nestedArray = $arrayItem->value;
117-
foreach ($nestedArray->items as $nestedArrayItem) {
118-
if (! $nestedArrayItem->key instanceof Expr) {
119-
continue;
120-
}
121-
122-
// remove key
123-
$nestedArrayItem->key = null;
124-
$hasChanged = true;
125-
}
126-
127-
}
128-
}
129-
130-
// 2. remove yield keys
131-
foreach ((array) $dataProviderClassMethod->stmts as $classMethodStmt) {
132-
if (! $classMethodStmt instanceof Expression) {
133-
continue;
134-
}
135-
136-
if (! $classMethodStmt->expr instanceof Yield_) {
137-
continue;
138-
}
139-
140-
$yield = $classMethodStmt->expr;
141-
if (! $yield->value instanceof Array_) {
142-
continue;
143-
}
144-
145-
$yieldArray = $yield->value;
146-
147-
foreach ($yieldArray->items as $yieldArrayItem) {
148-
if (! $yieldArrayItem->key instanceof Expr) {
149-
continue;
150-
}
151-
152-
// remove key
153-
$yieldArrayItem->key = null;
154-
$hasChanged = true;
155-
}
156-
}
157-
}
158-
159-
if ($hasChanged === false) {
160-
return null;
161-
}
162-
163-
return $node;
83+
throw new ShouldNotHappenException(sprintf(
84+
'"%s" is deprecated and should not be used anymore. Remove it from your config files.',
85+
self::class,
86+
));
16487
}
16588
}

0 commit comments

Comments
 (0)