Updated Rector to commit 1576a7b330ae4537198474d987a99e78153acc6b

1576a7b330 Clean up PHPStan ignore errors (#6682)
This commit is contained in:
Tomas Votruba 2025-01-19 18:43:51 +00:00
parent 65d075ae29
commit 9b969244a3
9 changed files with 168 additions and 9 deletions

View File

@ -1811,6 +1811,7 @@ return array(
'Rector\\PHPUnit\\Enum\\AssertMethod' => $vendorDir . '/rector/rector-phpunit/src/Enum/AssertMethod.php',
'Rector\\PHPUnit\\Enum\\ConsecutiveMethodName' => $vendorDir . '/rector/rector-phpunit/src/Enum/ConsecutiveMethodName.php',
'Rector\\PHPUnit\\Enum\\ConsecutiveVariable' => $vendorDir . '/rector/rector-phpunit/src/Enum/ConsecutiveVariable.php',
'Rector\\PHPUnit\\Enum\\PHPUnitClassName' => $vendorDir . '/rector/rector-phpunit/src/Enum/PHPUnitClassName.php',
'Rector\\PHPUnit\\MethodCallRemover' => $vendorDir . '/rector/rector-phpunit/src/MethodCallRemover.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => $vendorDir . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ArgumentMover' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/ArgumentMover.php',
@ -1830,6 +1831,7 @@ return array(
'Rector\\PHPUnit\\PHPUnit100\\NodeFactory\\WillReturnCallbackFactory' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/NodeFactory/WillReturnCallbackFactory.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\AddProphecyTraitRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\PublicDataProviderClassMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/PublicDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\RemoveNamedArgsInDataProviderRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/RemoveNamedArgsInDataProviderRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\StaticDataProviderClassMethodRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/StaticDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\PropertyExistsWithoutAssertRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/PropertyExistsWithoutAssertRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\RemoveSetMethodsMethodCallRector' => $vendorDir . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/RemoveSetMethodsMethodCallRector.php',

View File

@ -2030,6 +2030,7 @@ class ComposerStaticInit710f84b2f2fc7ba537bd030f7a992efa
'Rector\\PHPUnit\\Enum\\AssertMethod' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/AssertMethod.php',
'Rector\\PHPUnit\\Enum\\ConsecutiveMethodName' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/ConsecutiveMethodName.php',
'Rector\\PHPUnit\\Enum\\ConsecutiveVariable' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/ConsecutiveVariable.php',
'Rector\\PHPUnit\\Enum\\PHPUnitClassName' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Enum/PHPUnitClassName.php',
'Rector\\PHPUnit\\MethodCallRemover' => __DIR__ . '/..' . '/rector/rector-phpunit/src/MethodCallRemover.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ArgumentMover' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/ArgumentMover.php',
@ -2049,6 +2050,7 @@ class ComposerStaticInit710f84b2f2fc7ba537bd030f7a992efa
'Rector\\PHPUnit\\PHPUnit100\\NodeFactory\\WillReturnCallbackFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/NodeFactory/WillReturnCallbackFactory.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\AddProphecyTraitRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\PublicDataProviderClassMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/PublicDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\RemoveNamedArgsInDataProviderRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/RemoveNamedArgsInDataProviderRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\Class_\\StaticDataProviderClassMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/Class_/StaticDataProviderClassMethodRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\PropertyExistsWithoutAssertRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/PropertyExistsWithoutAssertRector.php',
'Rector\\PHPUnit\\PHPUnit100\\Rector\\MethodCall\\RemoveSetMethodsMethodCallRector' => __DIR__ . '/..' . '/rector/rector-phpunit/rules/PHPUnit100/Rector/MethodCall/RemoveSetMethodsMethodCallRector.php',

View File

@ -1804,12 +1804,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-phpunit.git",
"reference": "0238d9ce5466fc162ac2b09cf181f6821b77d385"
"reference": "4e82fcd9b2c742ff61d2d3540cc0158997df7cb2"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/0238d9ce5466fc162ac2b09cf181f6821b77d385",
"reference": "0238d9ce5466fc162ac2b09cf181f6821b77d385",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/4e82fcd9b2c742ff61d2d3540cc0158997df7cb2",
"reference": "4e82fcd9b2c742ff61d2d3540cc0158997df7cb2",
"shasum": ""
},
"require": {
@ -1830,7 +1830,7 @@
"tomasvotruba\/class-leak": "^1.2",
"tracy\/tracy": "^2.10"
},
"time": "2025-01-19T18:16:29+00:00",
"time": "2025-01-19T18:40:48+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/
final class GeneratedConfig
{
public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main ceda7a4'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 2e0cde6'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main 0238d9c'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main 4661c01'));
public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main ceda7a4'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 2e0cde6'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main 4e82fcd'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main 4661c01'));
private function __construct()
{
}

View File

@ -6,6 +6,7 @@ namespace Rector\PHPUnit\CodeQuality\Rector\MethodCall;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Scalar;
@ -104,6 +105,9 @@ CODE_SAMPLE
if ($expr instanceof Scalar) {
return \true;
}
if ($expr instanceof ConstFetch) {
return \true;
}
return $expr instanceof ClassConstFetch;
}
}

View File

@ -0,0 +1,123 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\PHPUnit100\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\Yield_;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Expression;
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
use Rector\PHPUnit\NodeFinder\DataProviderClassMethodFinder;
use Rector\PHPUnit\Tests\PHPUnit100\Rector\Class_\RemoveNamedArgsInDataProviderRector\RemoveNamedArgsInDataProviderRectorTest;
use Rector\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see RemoveNamedArgsInDataProviderRectorTest
*/
final class RemoveNamedArgsInDataProviderRector extends AbstractRector
{
/**
* @readonly
*/
private TestsNodeAnalyzer $testsNodeAnalyzer;
/**
* @readonly
*/
private DataProviderClassMethodFinder $dataProviderClassMethodFinder;
public function __construct(TestsNodeAnalyzer $testsNodeAnalyzer, DataProviderClassMethodFinder $dataProviderClassMethodFinder)
{
$this->testsNodeAnalyzer = $testsNodeAnalyzer;
$this->dataProviderClassMethodFinder = $dataProviderClassMethodFinder;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Remove named arguments in data provider', [new CodeSample(<<<'CODE_SAMPLE'
use PHPUnit\Framework\TestCase;
final class SomeTest extends TestCase
{
/**
* @dataProvider provideData()
*/
public function test()
{
}
public static function provideData()
{
yield ['namedArg' => 100];
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use PHPUnit\Framework\TestCase;
final class SomeTest extends TestCase
{
/**
* @dataProvider provideData()
*/
public function test()
{
}
public static function provideData()
{
yield [100];
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
if (!$this->testsNodeAnalyzer->isInTestClass($node)) {
return null;
}
$hasChanged = \false;
$dataProviders = $this->dataProviderClassMethodFinder->find($node);
foreach ($dataProviders as $dataProvider) {
/** @var Expression $stmt */
foreach ($dataProvider->getStmts() ?? [] as $stmt) {
$expr = $stmt->expr;
if ($expr instanceof Yield_) {
$this->handleStmt($expr->value);
$hasChanged = \true;
} elseif ($expr instanceof Array_) {
$this->handleStmt($expr);
$hasChanged = \true;
}
}
}
if ($hasChanged) {
return $node;
}
return null;
}
private function handleStmt(Array_ $array) : void
{
foreach ($array->items as $item) {
if (!$item instanceof ArrayItem) {
continue;
}
if (!$item->key instanceof Int_) {
$item->key = null;
}
}
}
}

View File

@ -0,0 +1,16 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\Enum;
final class PHPUnitClassName
{
/**
* @var string
*/
public const TEST_CASE = 'PHPUnit\\Framework\\TestCase';
/**
* @var string
*/
public const ASSERT = 'PHPUnit\\Framework\\Assert';
}

View File

@ -12,6 +12,7 @@ use PHPStan\Type\ObjectType;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\PHPUnit\Enum\PHPUnitClassName;
use Rector\Reflection\ReflectionResolver;
final class TestsNodeAnalyzer
{
@ -95,9 +96,20 @@ final class TestsNodeAnalyzer
}
public function isPHPUnitTestCaseCall(Node $node) : bool
{
if (!$this->isInTestClass($node)) {
return \false;
if ($node instanceof MethodCall) {
return $this->isInTestClass($node);
}
return $node instanceof MethodCall || $node instanceof StaticCall;
if ($node instanceof StaticCall) {
$classType = $this->nodeTypeResolver->getType($node->class);
if ($classType instanceof ObjectType) {
if ($classType->isInstanceOf(PHPUnitClassName::TEST_CASE)->yes()) {
return \true;
}
if ($classType->isInstanceOf(PHPUnitClassName::ASSERT)->yes()) {
return \true;
}
}
}
return \false;
}
}