From 22c18b8179776b7b736b9329316b0468541f80e1 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 31 Jan 2024 23:36:35 +0000 Subject: [PATCH] Updated Rector to commit f03a6fd7d060535a5c124fe461190aafc527364e https://github.com/rectorphp/rector-src/commit/f03a6fd7d060535a5c124fe461190aafc527364e [Privatization] Add FinalizeTestCaseClassRector (#5539) --- config/set/privatization.php | 4 +- .../Class_/FinalizeTestCaseClassRector.php | 81 +++++++++++++++++++ src/Application/VersionResolver.php | 4 +- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + 5 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php diff --git a/config/set/privatization.php b/config/set/privatization.php index 4a2b02a38d1..fad1dc2c61c 100644 --- a/config/set/privatization.php +++ b/config/set/privatization.php @@ -7,6 +7,4 @@ use Rector\Config\RectorConfig; use Rector\Privatization\Rector\ClassMethod\PrivatizeFinalClassMethodRector; use Rector\Privatization\Rector\MethodCall\PrivatizeLocalGetterToPropertyRector; use Rector\Privatization\Rector\Property\PrivatizeFinalClassPropertyRector; -return static function (RectorConfig $rectorConfig) : void { - $rectorConfig->rules([PrivatizeLocalGetterToPropertyRector::class, PrivatizeFinalClassPropertyRector::class, PrivatizeFinalClassMethodRector::class]); -}; +return RectorConfig::configure()->withRules([PrivatizeLocalGetterToPropertyRector::class, PrivatizeFinalClassPropertyRector::class, PrivatizeFinalClassMethodRector::class]); diff --git a/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php b/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php new file mode 100644 index 00000000000..e2e2eecfedc --- /dev/null +++ b/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php @@ -0,0 +1,81 @@ +reflectionProvider = $reflectionProvider; + $this->visibilityManipulator = $visibilityManipulator; + } + public function getRuleDefinition() : RuleDefinition + { + return new RuleDefinition('PHPUnit test case will be finalized', [new CodeSample(<<<'CODE_SAMPLE' +use PHPUnit\Framework\TestCase; + +class SomeClass extends TestCase +{ +} +CODE_SAMPLE +, <<<'CODE_SAMPLE' +final use PHPUnit\Framework\TestCase; + +class SomeClass extends TestCase +{ +} +CODE_SAMPLE +)]); + } + /** + * @return array> + */ + public function getNodeTypes() : array + { + return [Class_::class]; + } + /** + * @param Class_ $node + */ + public function refactor(Node $node) : ?Node + { + // skip obvious cases + if ($node->isAbstract() || $node->isAnonymous() || $node->isFinal()) { + return null; + } + $className = $this->getName($node); + if (!\is_string($className)) { + return null; + } + if (!$this->reflectionProvider->hasClass($className)) { + return null; + } + $classReflection = $this->reflectionProvider->getClass($className); + if (!$classReflection->isSubclassOf('PHPUnit\\Framework\\TestCase')) { + return null; + } + $this->visibilityManipulator->makeFinal($node); + return $node; + } +} diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 7950aa6abfc..dbb15fe4524 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '3cfdad6ce695b2ea651c1d602e37f129f18e585e'; + public const PACKAGE_VERSION = 'f03a6fd7d060535a5c124fe461190aafc527364e'; /** * @api * @var string */ - public const RELEASE_DATE = '2024-01-31 23:19:02'; + public const RELEASE_DATE = '2024-01-31 23:34:19'; /** * @var int */ diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 84b2afdb1c9..397db99f56d 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1959,6 +1959,7 @@ return array( 'Rector\\Privatization\\NodeManipulator\\VisibilityManipulator' => $baseDir . '/rules/Privatization/NodeManipulator/VisibilityManipulator.php', 'Rector\\Privatization\\Rector\\ClassMethod\\PrivatizeFinalClassMethodRector' => $baseDir . '/rules/Privatization/Rector/ClassMethod/PrivatizeFinalClassMethodRector.php', 'Rector\\Privatization\\Rector\\Class_\\FinalizeClassesWithoutChildrenRector' => $baseDir . '/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php', + 'Rector\\Privatization\\Rector\\Class_\\FinalizeTestCaseClassRector' => $baseDir . '/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php', 'Rector\\Privatization\\Rector\\MethodCall\\PrivatizeLocalGetterToPropertyRector' => $baseDir . '/rules/Privatization/Rector/MethodCall/PrivatizeLocalGetterToPropertyRector.php', 'Rector\\Privatization\\Rector\\Property\\PrivatizeFinalClassPropertyRector' => $baseDir . '/rules/Privatization/Rector/Property/PrivatizeFinalClassPropertyRector.php', 'Rector\\Privatization\\TypeManipulator\\TypeNormalizer' => $baseDir . '/rules/Privatization/TypeManipulator/TypeNormalizer.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 27196d41ce3..c4c9fc9ec37 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -2173,6 +2173,7 @@ class ComposerStaticInitf637847380e2ddf55dcae18dded1d2b3 'Rector\\Privatization\\NodeManipulator\\VisibilityManipulator' => __DIR__ . '/../..' . '/rules/Privatization/NodeManipulator/VisibilityManipulator.php', 'Rector\\Privatization\\Rector\\ClassMethod\\PrivatizeFinalClassMethodRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/ClassMethod/PrivatizeFinalClassMethodRector.php', 'Rector\\Privatization\\Rector\\Class_\\FinalizeClassesWithoutChildrenRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php', + 'Rector\\Privatization\\Rector\\Class_\\FinalizeTestCaseClassRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Class_/FinalizeTestCaseClassRector.php', 'Rector\\Privatization\\Rector\\MethodCall\\PrivatizeLocalGetterToPropertyRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/MethodCall/PrivatizeLocalGetterToPropertyRector.php', 'Rector\\Privatization\\Rector\\Property\\PrivatizeFinalClassPropertyRector' => __DIR__ . '/../..' . '/rules/Privatization/Rector/Property/PrivatizeFinalClassPropertyRector.php', 'Rector\\Privatization\\TypeManipulator\\TypeNormalizer' => __DIR__ . '/../..' . '/rules/Privatization/TypeManipulator/TypeNormalizer.php',