Updated Rector to commit 3569bfdd24

3569bfdd24 Bump rector-phpunit without robot loader (#31)
This commit is contained in:
Tomas Votruba 2021-05-14 12:21:00 +00:00
parent 146dc7d680
commit 767189f9ae
44 changed files with 617 additions and 449 deletions

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4::getLoader();
return ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9::getLoader();

File diff suppressed because one or more lines are too long

View File

@ -2475,7 +2475,7 @@ return array(
'Rector\\PHPStanStaticTypeMapper\\Utils\\TypeUnwrapper' => $baseDir . '/packages/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php',
'Rector\\PHPStanStaticTypeMapper\\ValueObject\\TypeKind' => $baseDir . '/packages/PHPStanStaticTypeMapper/ValueObject/TypeKind.php',
'Rector\\PHPStanStaticTypeMapper\\ValueObject\\UnionTypeAnalysis' => $baseDir . '/packages/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php',
'Rector\\PHPUnit\\Composer\\ComposerAutoloadedDirectoryProvider' => $vendorDir . '/rector/rector-phpunit/src/Composer/ComposerAutoloadedDirectoryProvider.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => $vendorDir . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ExpectationAnalyzer' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/ExpectationAnalyzer.php',
'Rector\\PHPUnit\\NodeAnalyzer\\TestsNodeAnalyzer' => $vendorDir . '/rector/rector-phpunit/src/NodeAnalyzer/TestsNodeAnalyzer.php',
'Rector\\PHPUnit\\NodeFactory\\ArgumentShiftingFactory' => $vendorDir . '/rector/rector-phpunit/src/NodeFactory/ArgumentShiftingFactory.php',
@ -2532,10 +2532,7 @@ return array(
'Rector\\PHPUnit\\Rector\\MethodCall\\UseSpecificWillMethodRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/MethodCall/UseSpecificWillMethodRector.php',
'Rector\\PHPUnit\\Rector\\MethodCall\\WithConsecutiveArgToArrayRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/MethodCall/WithConsecutiveArgToArrayRector.php',
'Rector\\PHPUnit\\Rector\\StaticCall\\GetMockRector' => $vendorDir . '/rector/rector-phpunit/src/Rector/StaticCall/GetMockRector.php',
'Rector\\PHPUnit\\RobotLoader\\RobotLoaderFactory' => $vendorDir . '/rector/rector-phpunit/src/RobotLoader/RobotLoaderFactory.php',
'Rector\\PHPUnit\\Set\\PHPUnitSetList' => $vendorDir . '/rector/rector-phpunit/src/Set/PHPUnitSetList.php',
'Rector\\PHPUnit\\TestClassResolver\\PHPUnitTestCaseClassesProvider' => $vendorDir . '/rector/rector-phpunit/src/TestClassResolver/PHPUnitTestCaseClassesProvider.php',
'Rector\\PHPUnit\\TestClassResolver\\TestClassResolver' => $vendorDir . '/rector/rector-phpunit/src/TestClassResolver/TestClassResolver.php',
'Rector\\PHPUnit\\ValueObject\\ArrayArgumentToDataProvider' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/ArrayArgumentToDataProvider.php',
'Rector\\PHPUnit\\ValueObject\\BinaryOpWithAssertMethod' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/BinaryOpWithAssertMethod.php',
'Rector\\PHPUnit\\ValueObject\\ConstantWithAssertMethods' => $vendorDir . '/rector/rector-phpunit/src/ValueObject/ConstantWithAssertMethods.php',

View File

@ -14,10 +14,10 @@ return array(
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
'd507e002f7fce7f0c6dbf1f22edcb902' => $vendorDir . '/tracy/tracy/src/Tracy/functions.php',
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
'65fec9ebcfbb3cbb4fd0d519687aea01' => $vendorDir . '/danielstjules/stringy/src/Create.php',
'8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
'65fec9ebcfbb3cbb4fd0d519687aea01' => $vendorDir . '/danielstjules/stringy/src/Create.php',
'30bca7fff093e8069bed7c55247e2bf8' => $baseDir . '/src/functions/node_helper.php',
'4508688f3cab21375725e8d11ca194a2' => $baseDir . '/src/constants.php',
);

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4
class ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4::$files;
$includeFiles = Composer\Autoload\ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire2821fef952dd3e7d5d00ee39804e18c4($fileIdentifier, $file);
composerRequiree7e48f7b8341a9e5f98b251b63d86dd9($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire2821fef952dd3e7d5d00ee39804e18c4($fileIdentifier, $file)
function composerRequiree7e48f7b8341a9e5f98b251b63d86dd9($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4
class ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -15,10 +15,10 @@ class ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
'd507e002f7fce7f0c6dbf1f22edcb902' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/functions.php',
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
'65fec9ebcfbb3cbb4fd0d519687aea01' => __DIR__ . '/..' . '/danielstjules/stringy/src/Create.php',
'8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
'65fec9ebcfbb3cbb4fd0d519687aea01' => __DIR__ . '/..' . '/danielstjules/stringy/src/Create.php',
'30bca7fff093e8069bed7c55247e2bf8' => __DIR__ . '/../..' . '/src/functions/node_helper.php',
'4508688f3cab21375725e8d11ca194a2' => __DIR__ . '/../..' . '/src/constants.php',
);
@ -2819,7 +2819,7 @@ class ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4
'Rector\\PHPStanStaticTypeMapper\\Utils\\TypeUnwrapper' => __DIR__ . '/../..' . '/packages/PHPStanStaticTypeMapper/Utils/TypeUnwrapper.php',
'Rector\\PHPStanStaticTypeMapper\\ValueObject\\TypeKind' => __DIR__ . '/../..' . '/packages/PHPStanStaticTypeMapper/ValueObject/TypeKind.php',
'Rector\\PHPStanStaticTypeMapper\\ValueObject\\UnionTypeAnalysis' => __DIR__ . '/../..' . '/packages/PHPStanStaticTypeMapper/ValueObject/UnionTypeAnalysis.php',
'Rector\\PHPUnit\\Composer\\ComposerAutoloadedDirectoryProvider' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Composer/ComposerAutoloadedDirectoryProvider.php',
'Rector\\PHPUnit\\Naming\\TestClassNameResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Naming/TestClassNameResolver.php',
'Rector\\PHPUnit\\NodeAnalyzer\\ExpectationAnalyzer' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/ExpectationAnalyzer.php',
'Rector\\PHPUnit\\NodeAnalyzer\\TestsNodeAnalyzer' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeAnalyzer/TestsNodeAnalyzer.php',
'Rector\\PHPUnit\\NodeFactory\\ArgumentShiftingFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/NodeFactory/ArgumentShiftingFactory.php',
@ -2876,10 +2876,7 @@ class ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4
'Rector\\PHPUnit\\Rector\\MethodCall\\UseSpecificWillMethodRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/MethodCall/UseSpecificWillMethodRector.php',
'Rector\\PHPUnit\\Rector\\MethodCall\\WithConsecutiveArgToArrayRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/MethodCall/WithConsecutiveArgToArrayRector.php',
'Rector\\PHPUnit\\Rector\\StaticCall\\GetMockRector' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Rector/StaticCall/GetMockRector.php',
'Rector\\PHPUnit\\RobotLoader\\RobotLoaderFactory' => __DIR__ . '/..' . '/rector/rector-phpunit/src/RobotLoader/RobotLoaderFactory.php',
'Rector\\PHPUnit\\Set\\PHPUnitSetList' => __DIR__ . '/..' . '/rector/rector-phpunit/src/Set/PHPUnitSetList.php',
'Rector\\PHPUnit\\TestClassResolver\\PHPUnitTestCaseClassesProvider' => __DIR__ . '/..' . '/rector/rector-phpunit/src/TestClassResolver/PHPUnitTestCaseClassesProvider.php',
'Rector\\PHPUnit\\TestClassResolver\\TestClassResolver' => __DIR__ . '/..' . '/rector/rector-phpunit/src/TestClassResolver/TestClassResolver.php',
'Rector\\PHPUnit\\ValueObject\\ArrayArgumentToDataProvider' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/ArrayArgumentToDataProvider.php',
'Rector\\PHPUnit\\ValueObject\\BinaryOpWithAssertMethod' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/BinaryOpWithAssertMethod.php',
'Rector\\PHPUnit\\ValueObject\\ConstantWithAssertMethods' => __DIR__ . '/..' . '/rector/rector-phpunit/src/ValueObject/ConstantWithAssertMethods.php',
@ -3486,9 +3483,9 @@ class ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit2821fef952dd3e7d5d00ee39804e18c4::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInite7e48f7b8341a9e5f98b251b63d86dd9::$classMap;
}, null, ClassLoader::class);
}

View File

@ -1310,35 +1310,38 @@
},
{
"name": "rector\/rector-cakephp",
"version": "0.10.4",
"version_normalized": "0.10.4.0",
"version": "0.11.1",
"version_normalized": "0.11.1.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-cakephp.git",
"reference": "5155ac30d2cd04144690c118a030af0a4a1e68f4"
"reference": "81090619141b4db452cca5b3c56c3e14fd169bbe"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-cakephp\/zipball\/5155ac30d2cd04144690c118a030af0a4a1e68f4",
"reference": "5155ac30d2cd04144690c118a030af0a4a1e68f4",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-cakephp\/zipball\/81090619141b4db452cca5b3c56c3e14fd169bbe",
"reference": "81090619141b4db452cca5b3c56c3e14fd169bbe",
"shasum": ""
},
"require": {
"danielstjules\/stringy": "^3.1",
"ext-xml": "*",
"php": ">=7.3",
"rector\/rector": "^0.10.5"
"rector\/rector": "^0.11"
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"require-dev": {
"phpstan\/extension-installer": "^1.1",
"phpunit\/phpunit": "^9.5",
"rector\/rector-phpstan-rules": "^0.2.7",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/phpstan-rules": "^9.2",
"symplify\/rule-doc-generator": "^9.2"
},
"time": "2021-04-15T22:27:55+00:00",
"time": "2021-05-14T11:45:45+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
@ -1363,41 +1366,37 @@
"description": "Rector upgrades rules for CakePHP",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-cakephp\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-cakephp\/tree\/0.10.4"
"source": "https:\/\/github.com\/rectorphp\/rector-cakephp\/tree\/0.11.1"
},
"install-path": "..\/rector\/rector-cakephp"
},
{
"name": "rector\/rector-doctrine",
"version": "0.10.6",
"version_normalized": "0.10.6.0",
"version": "0.11.0",
"version_normalized": "0.11.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git",
"reference": "52dbdf1d60c522c1c40142a194960610db451f91"
"reference": "1a748843937b1abb630080973f9d7e89c13b1831"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/52dbdf1d60c522c1c40142a194960610db451f91",
"reference": "52dbdf1d60c522c1c40142a194960610db451f91",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/1a748843937b1abb630080973f9d7e89c13b1831",
"reference": "1a748843937b1abb630080973f9d7e89c13b1831",
"shasum": ""
},
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.10"
},
"conflict": {
"rector\/rector": "<=0.10.3"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/phpstan-rules": "^9.2",
"symplify\/rule-doc-generator": "^9.2",
"tracy\/tracy": "^2.8"
"symplify\/rule-doc-generator": "^9.2"
},
"time": "2021-04-24T12:17:00+00:00",
"time": "2021-05-14T11:37:50+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
@ -1422,45 +1421,43 @@
"description": "Rector upgrades rules for Doctrine",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-doctrine\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-doctrine\/tree\/0.10.6"
"source": "https:\/\/github.com\/rectorphp\/rector-doctrine\/tree\/0.11.0"
},
"install-path": "..\/rector\/rector-doctrine"
},
{
"name": "rector\/rector-laravel",
"version": "0.10.2",
"version_normalized": "0.10.2.0",
"version": "0.11.0",
"version_normalized": "0.11.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-laravel.git",
"reference": "d4ccd50d7975bea9a0ce961bbaded385b5ede739"
"reference": "14fbe65fc0e8148cc578189f1dfede49f7a069c0"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-laravel\/zipball\/d4ccd50d7975bea9a0ce961bbaded385b5ede739",
"reference": "d4ccd50d7975bea9a0ce961bbaded385b5ede739",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-laravel\/zipball\/14fbe65fc0e8148cc578189f1dfede49f7a069c0",
"reference": "14fbe65fc0e8148cc578189f1dfede49f7a069c0",
"shasum": ""
},
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.5"
},
"conflict": {
"rector\/rector": "<=0.10.3"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpstan\/extension-installer": "^1.1",
"phpunit\/phpunit": "^9.5",
"rector\/rector-phpstan-rules": "^0.2.8",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/phpstan-rules": "^9.2",
"symplify\/rule-doc-generator": "^9.2",
"tracy\/tracy": "^2.8"
"symplify\/rule-doc-generator": "^9.2"
},
"time": "2021-04-15T22:21:20+00:00",
"time": "2021-05-14T11:39:55+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -1481,52 +1478,49 @@
"description": "Rector upgrades rules for Laravel Framework",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-laravel\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-laravel\/tree\/0.10.2"
"source": "https:\/\/github.com\/rectorphp\/rector-laravel\/tree\/0.11.0"
},
"install-path": "..\/rector\/rector-laravel"
},
{
"name": "rector\/rector-nette",
"version": "0.10.10",
"version_normalized": "0.10.10.0",
"version": "0.11.1",
"version_normalized": "0.11.1.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-nette.git",
"reference": "e9f0de1ffb3ba1eecdaa281fcd64fda1d3515e6f"
"reference": "148d511d52034adf34ae7109b155a6a66a6c400a"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/e9f0de1ffb3ba1eecdaa281fcd64fda1d3515e6f",
"reference": "e9f0de1ffb3ba1eecdaa281fcd64fda1d3515e6f",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/148d511d52034adf34ae7109b155a6a66a6c400a",
"reference": "148d511d52034adf34ae7109b155a6a66a6c400a",
"shasum": ""
},
"require": {
"danielstjules\/stringy": "^3.1",
"ext-xml": "*",
"php": ">=7.3",
"rector\/rector": "^0.10.19"
},
"conflict": {
"rector\/rector": "<=0.10.3"
"rector\/rector": "^0.11"
},
"require-dev": {
"nette\/application": "^3.0.7",
"nette\/di": "^3.0",
"nette\/forms": "3.0.*",
"phpstan\/extension-installer": "^1.1",
"phpstan\/phpstan": "^0.12.85",
"phpstan\/phpstan-nette": "^0.12.16",
"phpunit\/phpunit": "^9.5",
"rector\/rector-phpstan-rules": "^0.2",
"rector\/rector-phpstan-rules": "^0.2.8",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/phpstan-rules": "^9.3",
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-05-06T23:55:02+00:00",
"time": "2021-05-14T12:07:56+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -1547,29 +1541,29 @@
"description": "Rector upgrades rules for Nette Framework",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-nette\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-nette\/tree\/0.10.10"
"source": "https:\/\/github.com\/rectorphp\/rector-nette\/tree\/0.11.1"
},
"install-path": "..\/rector\/rector-nette"
},
{
"name": "rector\/rector-nette-to-symfony",
"version": "0.10.0",
"version_normalized": "0.10.0.0",
"version": "0.11.0",
"version_normalized": "0.11.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony.git",
"reference": "27be9cb982ac7ad3799e0ac7fd45be0a46d7fb0b"
"reference": "3a803dfbd6b4e8bb6daebcfe7410c965bee34e0a"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette-to-symfony\/zipball\/27be9cb982ac7ad3799e0ac7fd45be0a46d7fb0b",
"reference": "27be9cb982ac7ad3799e0ac7fd45be0a46d7fb0b",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette-to-symfony\/zipball\/3a803dfbd6b4e8bb6daebcfe7410c965bee34e0a",
"reference": "3a803dfbd6b4e8bb6daebcfe7410c965bee34e0a",
"shasum": ""
},
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.19",
"rector\/rector-nette": "^0.10.9"
"rector\/rector": "^0.11",
"rector\/rector-nette": "^0.11"
},
"require-dev": {
"nette\/application": "^3.1",
@ -1577,14 +1571,14 @@
"phpstan\/extension-installer": "^1.1",
"phpstan\/phpstan-nette": "^0.12.16",
"phpunit\/phpunit": "^9.5",
"rector\/rector-phpstan-rules": "^0.1",
"rector\/rector-phpstan-rules": "^0.2",
"symfony\/form": "^5.2",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/phpstan-rules": "^9.3",
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-05-05T21:07:31+00:00",
"time": "2021-05-14T11:57:39+00:00",
"type": "rector-extension",
"extra": {
"rector": {
@ -1606,7 +1600,7 @@
"description": "Generate Rector rules from command line",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony\/tree\/0.10.0"
"source": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony\/tree\/0.11.0"
},
"funding": [
{
@ -1618,39 +1612,37 @@
},
{
"name": "rector\/rector-phpunit",
"version": "0.10.8",
"version_normalized": "0.10.8.0",
"version": "0.11.0",
"version_normalized": "0.11.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-phpunit.git",
"reference": "2b272b61cacf29bf0e448719165c8376cd41872e"
"reference": "3ced54672b97aab5954b15dea1d7330ccbc0f155"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/2b272b61cacf29bf0e448719165c8376cd41872e",
"reference": "2b272b61cacf29bf0e448719165c8376cd41872e",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/3ced54672b97aab5954b15dea1d7330ccbc0f155",
"reference": "3ced54672b97aab5954b15dea1d7330ccbc0f155",
"shasum": ""
},
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.10"
},
"conflict": {
"rector\/rector": "<=0.10.3"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpstan\/extension-installer": "^1.1",
"phpunit\/phpunit": "^9.5",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"rector\/rector-phpstan-rules": "^0.2.6",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/phpstan-rules": "^9.2",
"symplify\/rule-doc-generator": "^9.2",
"tracy\/tracy": "^2.8"
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-04-24T12:18:06+00:00",
"time": "2021-05-14T11:50:48+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -1671,49 +1663,47 @@
"description": "Rector upgrades rules for PHPUnit",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-phpunit\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-phpunit\/tree\/0.10.8"
"source": "https:\/\/github.com\/rectorphp\/rector-phpunit\/tree\/0.11.0"
},
"install-path": "..\/rector\/rector-phpunit"
},
{
"name": "rector\/rector-symfony",
"version": "0.10.6",
"version_normalized": "0.10.6.0",
"version": "0.11.0",
"version_normalized": "0.11.0.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
"reference": "583e77ad2fc8c7740418d55884beb3d18822e115"
"reference": "7b0e84886e7e4406ec6e08be2281e85102f04a98"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/583e77ad2fc8c7740418d55884beb3d18822e115",
"reference": "583e77ad2fc8c7740418d55884beb3d18822e115",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/7b0e84886e7e4406ec6e08be2281e85102f04a98",
"reference": "7b0e84886e7e4406ec6e08be2281e85102f04a98",
"shasum": ""
},
"require": {
"danielstjules\/stringy": "^3.1",
"ext-xml": "*",
"php": ">=7.3",
"rector\/rector": "^0.10.12"
},
"conflict": {
"rector\/rector": "<=0.10.3"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpstan\/extension-installer": "^1.1",
"phpunit\/phpunit": "^9.5",
"rector\/rector-phpstan-rules": "dev-main",
"rector\/rector-phpstan-rules": "^0.2.8",
"symfony\/security-core": "^5.2",
"symfony\/security-http": "^5.2",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/phpstan-rules": "^9.2",
"symplify\/rule-doc-generator": "^9.2"
"symplify\/easy-coding-standard": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/phpstan-rules": "^9.3",
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-04-26T10:06:34+00:00",
"time": "2021-05-14T11:49:58+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -1734,7 +1724,7 @@
"description": "Rector upgrades rules for Symfony Framework",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-symfony\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-symfony\/tree\/0.10.6"
"source": "https:\/\/github.com\/rectorphp\/rector-symfony\/tree\/0.11.0"
},
"install-path": "..\/rector\/rector-symfony"
},

File diff suppressed because one or more lines are too long

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-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.4'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.6'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.2'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.10'), 'rector/rector-nette-to-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette-to-symfony', 'relative_install_path' => '../../rector-nette-to-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.0'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.8'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.10.6'));
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.1'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.0'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.0'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.1'), 'rector/rector-nette-to-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette-to-symfony', 'relative_install_path' => '../../rector-nette-to-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.0'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.0'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.0'));
private function __construct()
{
}

View File

@ -6,14 +6,17 @@
"require": {
"php": ">=7.3",
"ext-xml": "*",
"rector\/rector": "^0.10.5"
"rector\/rector": "^0.11",
"danielstjules\/stringy": "^3.1"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/rule-doc-generator": "^9.2"
"symplify\/rule-doc-generator": "^9.2",
"phpstan\/extension-installer": "^1.1",
"rector\/rector-phpstan-rules": "^0.2.7"
},
"autoload": {
"psr-4": {

View File

@ -15,7 +15,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/cakephp/upgrade/blob/05d85c147bb1302b576b818cabb66a40462aaed0/src/Shell/Task/AppUsesTask.php#L183
*
* @see \aRector\CakePHP\Tests\Rector\FileWithoutNamespace\ImplicitShortClassNameUseStatementRector\ImplicitShortClassNameUseStatementRectorTest
* @see \Rector\CakePHP\Tests\Rector\FileWithoutNamespace\ImplicitShortClassNameUseStatementRector\ImplicitShortClassNameUseStatementRectorTest
*/
final class ImplicitShortClassNameUseStatementRector extends \Rector\Core\Rector\AbstractRector
{
@ -92,9 +92,6 @@ CODE_SAMPLE
$resolvedNames = [];
foreach ($names as $name) {
$classShortName = $this->getName($name);
if ($classShortName === null) {
continue;
}
$resolvedName = $this->implicitNameResolver->resolve($classShortName);
if ($resolvedName === null) {
continue;

View File

@ -17,7 +17,7 @@ use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix20210514\Webmozart\Assert\Assert;
/**
* @see \aRector\CakePHP\Tests\Rector\MethodCall\ArrayToFluentCallRector\ArrayToFluentCallRectorTest
* @see \Rector\CakePHP\Tests\Rector\MethodCall\ArrayToFluentCallRector\ArrayToFluentCallRectorTest
*/
final class ArrayToFluentCallRector extends \Rector\Core\Rector\AbstractRector implements \Rector\Core\Contract\Rector\ConfigurableRectorInterface
{

View File

@ -17,7 +17,7 @@ use RectorPrefix20210514\Webmozart\Assert\Assert;
* @see https://book.cakephp.org/3.0/en/appendices/3-4-migration-guide.html#deprecated-combined-get-set-methods
* @see https://github.com/cakephp/cakephp/commit/326292688c5e6d08945a3cafa4b6ffb33e714eea#diff-e7c0f0d636ca50a0350e9be316d8b0f9
*
* @see \aRector\CakePHP\Tests\Rector\MethodCall\ModalToGetSetRector\ModalToGetSetRectorTest
* @see \Rector\CakePHP\Tests\Rector\MethodCall\ModalToGetSetRector\ModalToGetSetRectorTest
*/
final class ModalToGetSetRector extends \Rector\Core\Rector\AbstractRector implements \Rector\Core\Contract\Rector\ConfigurableRectorInterface
{

View File

@ -16,7 +16,7 @@ use RectorPrefix20210514\Webmozart\Assert\Assert;
* @see https://book.cakephp.org/4.0/en/appendices/4-0-migration-guide.html
* @see https://github.com/cakephp/cakephp/commit/77017145961bb697b4256040b947029259f66a9b
*
* @see \aRector\CakePHP\Tests\Rector\MethodCall\RenameMethodCallBasedOnParameterRector\RenameMethodCallBasedOnParameterRectorTest
* @see \Rector\CakePHP\Tests\Rector\MethodCall\RenameMethodCallBasedOnParameterRector\RenameMethodCallBasedOnParameterRectorTest
*/
final class RenameMethodCallBasedOnParameterRector extends \Rector\Core\Rector\AbstractRector implements \Rector\Core\Contract\Rector\ConfigurableRectorInterface
{

View File

@ -18,7 +18,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
* @see https://github.com/cakephp/upgrade/blob/756410c8b7d5aff9daec3fa1fe750a3858d422ac/src/Shell/Task/AppUsesTask.php
* @see https://github.com/cakephp/upgrade/search?q=uses&unscoped_q=uses
*
* @see \aRector\CakePHP\Tests\Rector\Namespace_\AppUsesStaticCallToUseStatementRector\AppUsesStaticCallToUseStatementRectorTest
* @see \Rector\CakePHP\Tests\Rector\Namespace_\AppUsesStaticCallToUseStatementRector\AppUsesStaticCallToUseStatementRectorTest
*/
final class AppUsesStaticCallToUseStatementRector extends \Rector\Core\Rector\AbstractRector
{

View File

@ -16,7 +16,7 @@ use RectorPrefix20210514\Stringy\Stringy;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \aRector\CakePHP\Tests\Rector\Property\ChangeSnakedFixtureNameToPascal\ChangeSnakedFixtureNameToPascalTest
* @see \Rector\CakePHP\Tests\Rector\Property\ChangeSnakedFixtureNameToPascal\ChangeSnakedFixtureNameToPascalTest
*
* @see https://book.cakephp.org/3.0/en/appendices/3-7-migration-guide.html
*/

View File

@ -5,14 +5,13 @@
"description": "Rector upgrades rules for Doctrine",
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.10"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/easy-coding-standard": "^9.2",
"tracy\/tracy": "^2.8",
"symplify\/rule-doc-generator": "^9.2"
},
"autoload": {
@ -47,9 +46,6 @@
]
}
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -5,15 +5,16 @@
"description": "Rector upgrades rules for Laravel Framework",
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.5"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/easy-coding-standard": "^9.2",
"tracy\/tracy": "^2.8",
"symplify\/rule-doc-generator": "^9.2"
"symplify\/rule-doc-generator": "^9.2",
"rector\/rector-phpstan-rules": "^0.2.8",
"phpstan\/extension-installer": "^1.1"
},
"autoload": {
"psr-4": {
@ -39,7 +40,7 @@
},
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -47,9 +48,6 @@
]
}
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -3,9 +3,11 @@
declare (strict_types=1);
namespace RectorPrefix20210514;
use Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector;
use RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->defaults()->public()->autowire()->autoconfigure();
$services->load('Rector\\Laravel\\', __DIR__ . '/../src')->exclude([__DIR__ . '/../src/{Rector,ValueObject}']);
$services->set(\Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector::class);
};

View File

@ -12,13 +12,21 @@ Do you need to migrate from Nette to Symfony? You can ↓
See available [rules](/docs/rector_rules_overview.md)
## Read More
- Nette to Symfony app
- Nette\Tester to PHPUnit
## Install
```bash
composer require rector/rector-nette-to-symfony
```
## Use Sets
To add a set to your config, use `Rector\Symfony\Set\SymfonySetList` class and pick one of constants:
```php
use Rector\NetteToSymfony\Set\NetteToSymfonySetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->import(NetteToSymfonySetList::NETTE_TO_SYMFONY);
};
```

View File

@ -5,8 +5,8 @@
"license": "MIT",
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.19",
"rector\/rector-nette": "^0.10.9"
"rector\/rector": "^0.11",
"rector\/rector-nette": "^0.11"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
@ -16,7 +16,7 @@
"phpstan\/phpstan-nette": "^0.12.16",
"symplify\/rule-doc-generator": "^9.3",
"phpstan\/extension-installer": "^1.1",
"rector\/rector-phpstan-rules": "^0.1",
"rector\/rector-phpstan-rules": "^0.2",
"nette\/application": "^3.1",
"symfony\/form": "^5.2",
"nette\/forms": "^3.1"
@ -37,7 +37,11 @@
"scripts": {
"check-cs": "vendor\/bin\/ecs check --ansi",
"fix-cs": "vendor\/bin\/ecs check --fix --ansi",
"phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify"
"phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify",
"docs": [
"vendor\/bin\/rule-doc-generator generate src --output-file docs\/rector_rules_overview.md --ansi",
"vendor\/bin\/ecs check-markdown docs\/rector_rules_overview.md --ansi --fix"
]
},
"extra": {
"rector": {

View File

@ -0,0 +1,11 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210514;
use Rector\NetteToSymfony\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector;
use RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\NetteToSymfony\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector::class);
};

View File

@ -0,0 +1,323 @@
# 12 Rules Overview
## DeleteFactoryInterfaceRector
Interface factories are not needed in Symfony. Clear constructor injection is used instead
- class: [`Rector\NetteToSymfony\Rector\Interface_\DeleteFactoryInterfaceRector`](../src/Rector/Interface_/DeleteFactoryInterfaceRector.php)
```diff
-interface SomeControlFactoryInterface
-{
- public function create();
-}
```
<br>
## FormControlToControllerAndFormTypeRector
Change Form that extends Control to Controller and decoupled FormType
- class: [`Rector\NetteToSymfony\Rector\Class_\FormControlToControllerAndFormTypeRector`](../src/Rector/Class_/FormControlToControllerAndFormTypeRector.php)
```diff
-use Nette\Application\UI\Form;
-use Nette\Application\UI\Control;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
-class SomeForm extends Control
+final class SomeFormController extends AbstractController
{
- public function createComponentForm()
+ /**
+ * @Route(...)
+ */
+ public function actionSomeForm(Request $request): Response
{
- $form = new Form();
- $form->addText('name', 'Your name');
+ $form = $this->createForm(SomeFormType::class);
+ $form->handleRequest($request);
- $form->onSuccess[] = [$this, 'processForm'];
- }
-
- public function processForm(Form $form)
- {
- // process me
+ if ($form->isSuccess() && $form->isValid()) {
+ // process me
+ }
}
}
```
Extra file:
```php
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
class SomeFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $formBuilder, array $options)
{
$formBuilder->add('name', TextType::class, [
'label' => 'Your name',
]);
}
}
```
<br>
## FromHttpRequestGetHeaderToHeadersGetRector
Changes `getHeader()` to `$request->headers->get()`
- class: [`Rector\NetteToSymfony\Rector\MethodCall\FromHttpRequestGetHeaderToHeadersGetRector`](../src/Rector/MethodCall/FromHttpRequestGetHeaderToHeadersGetRector.php)
```diff
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
- $header = $this->httpRequest->getHeader('x');
+ $header = $request->headers->get('x');
}
}
```
<br>
## FromRequestGetParameterToAttributesGetRector
Changes `"getParameter()"` to `"attributes->get()"` from Nette to Symfony
- class: [`Rector\NetteToSymfony\Rector\MethodCall\FromRequestGetParameterToAttributesGetRector`](../src/Rector/MethodCall/FromRequestGetParameterToAttributesGetRector.php)
```diff
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
- $value = $request->getParameter('abz');
+ $value = $request->attribute->get('abz');
}
}
```
<br>
## NetteAssertToPHPUnitAssertRector
Migrate Nette/Assert calls to PHPUnit
- class: [`Rector\NetteToSymfony\Rector\StaticCall\NetteAssertToPHPUnitAssertRector`](../src/Rector/StaticCall/NetteAssertToPHPUnitAssertRector.php)
```diff
use Tester\Assert;
function someStaticFunctions()
{
- Assert::true(10 == 5);
+ \PHPUnit\Framework\Assert::assertTrue(10 == 5);
}
```
<br>
## NetteControlToSymfonyControllerRector
Migrate Nette Component to Symfony Controller
- class: [`Rector\NetteToSymfony\Rector\Class_\NetteControlToSymfonyControllerRector`](../src/Rector/Class_/NetteControlToSymfonyControllerRector.php)
```diff
-use Nette\Application\UI\Control;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\Response;
-class SomeControl extends Control
+class SomeController extends AbstractController
{
- public function render()
- {
- $this->template->param = 'some value';
- $this->template->render(__DIR__ . '/poll.latte');
- }
+ public function some(): Response
+ {
+ return $this->render(__DIR__ . '/poll.latte', ['param' => 'some value']);
+ }
}
```
<br>
## NetteFormToSymfonyFormRector
Migrate Nette\Forms in Presenter to Symfony
- class: [`Rector\NetteToSymfony\Rector\MethodCall\NetteFormToSymfonyFormRector`](../src/Rector/MethodCall/NetteFormToSymfonyFormRector.php)
```diff
use Nette\Application\UI\Presenter;
+use Symfony\Component\Form\Extension\Core\Type\TextType;
+use Symfony\Component\Form\Extension\Core\Type\SubmitType;
final class SomePresenter extends Presenter
{
public function someAction()
{
- $form = new UI\Form;
- $form->addText('name', 'Name:');
- $form->addSubmit('login', 'Sign up');
+ $form = $this->createFormBuilder();
+ $form->add('name', TextType::class, [
+ 'label' => 'Name:'
+ ]);
+ $form->add('login', SubmitType::class, [
+ 'label' => 'Sign up'
+ ]);
}
}
```
<br>
## NetteTesterClassToPHPUnitClassRector
Migrate Nette Tester test case to PHPUnit
- class: [`Rector\NetteToSymfony\Rector\Class_\NetteTesterClassToPHPUnitClassRector`](../src/Rector/Class_/NetteTesterClassToPHPUnitClassRector.php)
```diff
namespace KdybyTests\Doctrine;
use Tester\TestCase;
use Tester\Assert;
-require_once __DIR__ . '/../bootstrap.php';
-
-class ExtensionTest extends TestCase
+class ExtensionTest extends \PHPUnit\Framework\TestCase
{
public function testFunctionality()
{
- Assert::true($default instanceof Kdyby\Doctrine\EntityManager);
- Assert::true(5);
- Assert::same($container->getService('kdyby.doctrine.default.entityManager'), $default);
+ $this->assertInstanceOf(\Kdyby\Doctrine\EntityManager::cllass, $default);
+ $this->assertTrue(5);
+ $this->same($container->getService('kdyby.doctrine.default.entityManager'), $default);
}
-}
-
-(new \ExtensionTest())->run();
+}
```
<br>
## RenameEventNamesInEventSubscriberRector
Changes event names from Nette ones to Symfony ones
- class: [`Rector\NetteToSymfony\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector`](../src/Rector/ClassMethod/RenameEventNamesInEventSubscriberRector.php)
```diff
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
final class SomeClass implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
- return ['nette.application' => 'someMethod'];
+ return [\SymfonyEvents::KERNEL => 'someMethod'];
}
}
```
<br>
## RenameTesterTestToPHPUnitToTestFileRector
Rename "*.phpt" file to "*Test.php" file
- class: [`Rector\NetteToSymfony\Rector\Class_\RenameTesterTestToPHPUnitToTestFileRector`](../src/Rector/Class_/RenameTesterTestToPHPUnitToTestFileRector.php)
```diff
-// tests/SomeTestCase.phpt
+// tests/SomeTestCase.php
```
<br>
## RouterListToControllerAnnotationsRector
Change new `Route()` from RouteFactory to `@Route` annotation above controller method
- class: [`Rector\NetteToSymfony\Rector\ClassMethod\RouterListToControllerAnnotationsRector`](../src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php)
```diff
final class RouterFactory
{
public function create(): RouteList
{
$routeList = new RouteList();
+
+ // case of single action controller, usually get() or __invoke() method
$routeList[] = new Route('some-path', SomePresenter::class);
return $routeList;
}
}
+use Symfony\Component\Routing\Annotation\Route;
+
final class SomePresenter
{
+ /**
+ * @Route(path="some-path")
+ */
public function run()
{
}
}
```
<br>
## WrapTransParameterNameRector
Adds %% to placeholder name of `trans()` method if missing
- class: [`Rector\NetteToSymfony\Rector\MethodCall\WrapTransParameterNameRector`](../src/Rector/MethodCall/WrapTransParameterNameRector.php)
```diff
use Symfony\Component\Translation\Translator;
final class SomeController
{
public function run()
{
$translator = new Translator('');
$translated = $translator->trans(
'Hello %name%',
- ['name' => $name]
+ ['%name%' => $name]
);
}
}
```
<br>

View File

@ -7,7 +7,8 @@ use RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurat
use RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Option;
use RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (\RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$containerConfigurator->import(\RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Set\SetList::COMMON);
$containerConfigurator->import(\RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Set\SetList::PSR_12);
$parameters = $containerConfigurator->parameters();
$parameters->set(\RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Option::PATHS, [__DIR__ . '/src', __DIR__ . '/tests']);
$parameters->set(\RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Option::SETS, [\RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Set\SetList::COMMON, \RectorPrefix20210514\Symplify\EasyCodingStandard\ValueObject\Set\SetList::PSR_12]);
};

View File

@ -8,7 +8,14 @@ parameters:
excludes_analyse:
- '*tests/*/Source/*'
reportUnmatchedIgnoredErrors: false
ignoreErrors:
- '#Unable to resolve the template type T in call to method Rector\\Core\\PhpParser\\Node\\BetterNodeFinder\:\:findParentTypes\(\)#'
# requires an extension probably
- '#Method Rector\\NetteToSymfony\\Rector\\ClassMethod\\RouterListToControllerAnnotationsRector\:\:resolveAssignRouteNodes\(\) should return array<PhpParser\\Node\\Expr\\Assign\> but returns array<PhpParser\\Node\>#'
- '#This property type might be inlined to PHP\. Do you have confidence it is correct\? Put it here#'
# is always set
- '#Parameter \#1 \$smartFileInfo of method Rector\\Testing\\PHPUnit\\AbstractRectorTestCase\:\:assertFileWasRemoved\(\) expects Symplify\\SmartFileSystem\\SmartFileInfo, Symplify\\SmartFileSystem\\SmartFileInfo\|null given#'

View File

@ -6,6 +6,10 @@ namespace Rector\NetteToSymfony\Set;
use Rector\Set\Contract\SetListInterface;
final class NetteToSymfonySetList implements \Rector\Set\Contract\SetListInterface
{
/**
* @var string
*/
public const CONTRIBUTTE_TO_SYMFONY = __DIR__ . '/../../config/sets/contributte-to-symfony.php';
/**
* @var string
*/

View File

@ -6,7 +6,8 @@
"require": {
"php": ">=7.3",
"ext-xml": "*",
"rector\/rector": "^0.10.19"
"rector\/rector": "^0.11",
"danielstjules\/stringy": "^3.1"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
@ -19,8 +20,7 @@
"nette\/forms": "3.0.*",
"symplify\/rule-doc-generator": "^9.3",
"phpstan\/extension-installer": "^1.1",
"rector\/rector-phpstan-rules": "^0.2",
"phpstan\/phpstan": "^0.12.85"
"rector\/rector-phpstan-rules": "^0.2.8"
},
"autoload": {
"psr-4": {
@ -46,7 +46,7 @@
},
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -54,9 +54,6 @@
]
}
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -3,7 +3,6 @@
declare (strict_types=1);
namespace Rector\Nette\Rector\Identical;
use RectorPrefix20210514\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\BinaryOp\Identical;
use PhpParser\Node\Expr\BinaryOp\NotIdentical;
@ -76,7 +75,7 @@ CODE_SAMPLE
return null;
}
$arguments = [$substrFuncCall->args[0]->value, $string];
$staticCall = $this->nodeFactory->createStaticCall(\RectorPrefix20210514\Nette\Utils\Strings::class, 'endsWith', $arguments);
$staticCall = $this->nodeFactory->createStaticCall('Nette\\Utils\\Strings', 'endsWith', $arguments);
if ($node instanceof \PhpParser\Node\Expr\BinaryOp\Identical) {
return $staticCall;
}

View File

@ -5,15 +5,16 @@
"description": "Rector upgrades rules for PHPUnit",
"require": {
"php": ">=7.3",
"rector\/rector": "^0.10.10"
"rector\/rector": "^0.11"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/easy-coding-standard": "^9.2",
"tracy\/tracy": "^2.8",
"symplify\/rule-doc-generator": "^9.2"
"symplify\/phpstan-extensions": "^9.3",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/rule-doc-generator": "^9.3",
"rector\/rector-phpstan-rules": "^0.2.6",
"phpstan\/extension-installer": "^1.1"
},
"autoload": {
"psr-4": {
@ -39,7 +40,7 @@
},
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -47,9 +48,6 @@
]
}
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -7,7 +7,6 @@ use PHPStan\Type\MixedType;
use PHPStan\Type\VoidType;
use Rector\Core\ValueObject\MethodName;
use Rector\PHPUnit\Rector\MethodCall\AssertEqualsParameterToSpecificMethodsTypeRector;
use Rector\PHPUnit\Rector\MethodCall\ReplaceAssertArraySubsetWithDmsPolyfillRector;
use Rector\PHPUnit\Rector\MethodCall\SpecificAssertContainsRector;
use Rector\PHPUnit\Rector\MethodCall\SpecificAssertInternalTypeRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
@ -32,5 +31,4 @@ return static function (\RectorPrefix20210514\Symfony\Component\DependencyInject
]]]);
$services->set(\Rector\PHPUnit\Rector\MethodCall\AssertEqualsParameterToSpecificMethodsTypeRector::class);
$services->set(\Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector::class)->call('configure', [[\Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector::METHOD_RETURN_TYPES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'setUpBeforeClass', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'setUp', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'assertPreConditions', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'assertPostConditions', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'tearDown', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'tearDownAfterClass', new \PHPStan\Type\VoidType()), new \Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration('PHPUnit\\Framework\\TestCase', 'onNotSuccessfulTest', new \PHPStan\Type\VoidType())])]]);
$services->set(\Rector\PHPUnit\Rector\MethodCall\ReplaceAssertArraySubsetWithDmsPolyfillRector::class);
};

View File

@ -17,6 +17,6 @@ return static function (\RectorPrefix20210514\Symfony\Component\DependencyInject
$services->set(\Rector\PHPUnit\Rector\MethodCall\SpecificAssertContainsWithoutIdentityRector::class);
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[
// see https://github.com/sebastianbergmann/phpunit/issues/3957
\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\TestCase', 'expectExceptionMessageRegExp', 'expectExceptionMessageMatches'), new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\TestCase', 'assertRegExp', 'assertMatchesRegularExpression')]),
\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\TestCase', 'expectExceptionMessageRegExp', 'expectExceptionMessageMatches')]),
]]);
};

View File

@ -11,5 +11,24 @@ use Symplify\SymfonyPhpConfig\ValueObjectInliner;
return static function (\RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\PHPUnit\Rector\Class_\AddProphecyTraitRector::class);
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\TestCase', 'assertFileNotExists', 'assertFileDoesNotExist')])]]);
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([
// https://github.com/sebastianbergmann/phpunit/issues/4087
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertRegExp', 'assertMatchesRegularExpression'),
// https://github.com/sebastianbergmann/phpunit/issues/4090
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertNotRegExp', 'assertDoesNotMatchRegularExpression'),
// https://github.com/sebastianbergmann/phpunit/issues/4078
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertFileNotExists', 'assertFileDoesNotExist'),
// https://github.com/sebastianbergmann/phpunit/issues/4081
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertFileNotIsReadable', 'assertFileIsNotReadable'),
// https://github.com/sebastianbergmann/phpunit/issues/4072
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertDirectoryNotIsReadable', 'assertDirectoryIsNotReadable'),
// https://github.com/sebastianbergmann/phpunit/issues/4075
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertDirectoryNotIsWritable', 'assertDirectoryIsNotWritable'),
// https://github.com/sebastianbergmann/phpunit/issues/4069
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertDirectoryNotExists', 'assertDirectoryDoesNotExist'),
// https://github.com/sebastianbergmann/phpunit/issues/4066
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertNotIsWritable', 'assertIsNotWritable'),
// https://github.com/sebastianbergmann/phpunit/issues/4063
new \Rector\Renaming\ValueObject\MethodCallRename('PHPUnit\\Framework\\Assert', 'assertNotIsReadable', 'assertIsNotReadable'),
])]]);
};

View File

@ -1,87 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\Composer;
use RectorPrefix20210514\Nette\Utils\Arrays;
use RectorPrefix20210514\Nette\Utils\Json;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
use RectorPrefix20210514\Symplify\ComposerJsonManipulator\ValueObject\ComposerJsonSection;
use RectorPrefix20210514\Symplify\SmartFileSystem\SmartFileSystem;
final class ComposerAutoloadedDirectoryProvider
{
/**
* @var string[]
*/
private const AUTOLOAD_SECTIONS = [\RectorPrefix20210514\Symplify\ComposerJsonManipulator\ValueObject\ComposerJsonSection::AUTOLOAD, \RectorPrefix20210514\Symplify\ComposerJsonManipulator\ValueObject\ComposerJsonSection::AUTOLOAD_DEV];
/**
* @var string
*/
private $composerFilePath;
/**
* @var SmartFileSystem
*/
private $smartFileSystem;
public function __construct(\RectorPrefix20210514\Symplify\SmartFileSystem\SmartFileSystem $smartFileSystem)
{
$this->composerFilePath = \getcwd() . '/composer.json';
$this->smartFileSystem = $smartFileSystem;
}
/**
* @return string[]|mixed[]
*/
public function provide() : array
{
// @todo use paths parameter?
if (\Rector\Testing\PHPUnit\StaticPHPUnitEnvironment::isPHPUnitRun()) {
return [\getcwd() . '/src', \getcwd() . '/tests'];
}
$composerJson = $this->loadComposerJsonArray();
$autoloadDirectories = [];
foreach (self::AUTOLOAD_SECTIONS as $autoloadSection) {
if (!isset($composerJson[$autoloadSection])) {
continue;
}
$sectionDirectories = $this->collectDirectoriesFromAutoload($composerJson[$autoloadSection]);
$autoloadDirectories[] = $sectionDirectories;
}
return \RectorPrefix20210514\Nette\Utils\Arrays::flatten($autoloadDirectories);
}
/**
* @return mixed[]
*/
private function loadComposerJsonArray() : array
{
if (!\file_exists($this->composerFilePath)) {
return [];
}
$composerFileContent = $this->smartFileSystem->readFile($this->composerFilePath);
return \RectorPrefix20210514\Nette\Utils\Json::decode($composerFileContent, \RectorPrefix20210514\Nette\Utils\Json::FORCE_ARRAY);
}
/**
* @param string[] $composerJsonAutoload
* @return string[]
*/
private function collectDirectoriesFromAutoload(array $composerJsonAutoload) : array
{
$autoloadDirectories = [];
if (isset($composerJsonAutoload['psr-4'])) {
/** @var string[] $psr4 */
$psr4 = $composerJsonAutoload['psr-4'];
$autoloadDirectories = \array_merge($autoloadDirectories, $psr4);
}
if (isset($composerJsonAutoload['classmap'])) {
/** @var string[] $classmap */
$classmap = $composerJsonAutoload['classmap'];
foreach ($classmap as $singleClassmap) {
$singleClassmap = \getcwd() . '/' . $singleClassmap;
// skip file, we look only for directories
if (\file_exists($singleClassmap)) {
continue;
}
$autoloadDirectories[] = $singleClassmap;
}
}
return \array_values($autoloadDirectories);
}
}

View File

@ -0,0 +1,26 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\Naming;
final class TestClassNameResolver
{
/**
* @return string[]
*/
public function resolve(string $className) : array
{
$classNameParts = \explode('\\', $className);
$possibleTestClassNames = [$className . 'Test'];
$partCount = \count($classNameParts);
for ($i = 0; $i < $partCount; ++$i) {
$possibleClassNameParts = $classNameParts;
\array_splice($possibleClassNameParts, $i, 0, ['Tests']);
$possibleTestClassNames[] = \implode('\\', $possibleClassNameParts) . 'Test';
$possibleClassNameParts = $classNameParts;
\array_splice($possibleClassNameParts, $i, 0, ['Test']);
$possibleTestClassNames[] = \implode('\\', $possibleClassNameParts) . 'Test';
}
return $possibleTestClassNames;
}
}

View File

@ -12,7 +12,7 @@ use PHPStan\Reflection\ReflectionProvider;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\Rector\AbstractRector;
use Rector\PHPUnit\TestClassResolver\TestClassResolver;
use Rector\PHPUnit\Naming\TestClassNameResolver;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
@ -24,10 +24,6 @@ final class AddSeeTestAnnotationRector extends \Rector\Core\Rector\AbstractRecto
* @var string
*/
private const SEE = 'see';
/**
* @var TestClassResolver
*/
private $testClassResolver;
/**
* @var ReflectionProvider
*/
@ -36,11 +32,15 @@ final class AddSeeTestAnnotationRector extends \Rector\Core\Rector\AbstractRecto
* @var PhpDocTagRemover
*/
private $phpDocTagRemover;
public function __construct(\Rector\PHPUnit\TestClassResolver\TestClassResolver $testClassResolver, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover $phpDocTagRemover)
/**
* @var TestClassNameResolver
*/
private $testClassNameResolver;
public function __construct(\PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover $phpDocTagRemover, \Rector\PHPUnit\Naming\TestClassNameResolver $testClassNameResolver)
{
$this->testClassResolver = $testClassResolver;
$this->reflectionProvider = $reflectionProvider;
$this->phpDocTagRemover = $phpDocTagRemover;
$this->testClassNameResolver = $testClassNameResolver;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
@ -83,23 +83,27 @@ CODE_SAMPLE
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
$testCaseClassName = $this->testClassResolver->resolveFromClass($node);
if ($testCaseClassName === null) {
$className = $this->getName($node);
if ($className === null) {
return null;
}
if ($this->shouldSkipClass($node, $testCaseClassName)) {
$possibleTestClassNames = $this->testClassNameResolver->resolve($className);
$matchingTestClassName = $this->matchExistingClassName($possibleTestClassNames);
if ($this->shouldSkipClass($node)) {
return null;
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
if ($this->hasAlreadySeeAnnotation($phpDocInfo, $testCaseClassName)) {
return null;
}
$this->removeNonExistingClassSeeAnnotation($phpDocInfo);
$newSeeTagNode = $this->createSeePhpDocTagNode($testCaseClassName);
$phpDocInfo->addPhpDocTagNode($newSeeTagNode);
if ($matchingTestClassName !== null) {
if ($this->hasAlreadySeeAnnotation($phpDocInfo, $matchingTestClassName)) {
return null;
}
$newSeeTagNode = $this->createSeePhpDocTagNode($matchingTestClassName);
$phpDocInfo->addPhpDocTagNode($newSeeTagNode);
}
return $node;
}
private function shouldSkipClass(\PhpParser\Node\Stmt\Class_ $class, string $testCaseClassName) : bool
private function shouldSkipClass(\PhpParser\Node\Stmt\Class_ $class) : bool
{
// we are in the test case
if ($this->isName($class, '*Test')) {
@ -116,7 +120,7 @@ CODE_SAMPLE
/** @var GenericTagValueNode $genericTagValueNode */
$genericTagValueNode = $seePhpDocTagNode->value;
$seeTagClass = \ltrim($genericTagValueNode->value, '\\');
if ($seeTagClass === $testCaseClassName) {
if ($this->reflectionProvider->hasClass($seeTagClass)) {
return \true;
}
}
@ -168,4 +172,17 @@ CODE_SAMPLE
}
return \RectorPrefix20210514\Nette\Utils\Strings::endsWith($possibleClassName, 'Test');
}
/**
* @param string[] $classNames
*/
private function matchExistingClassName(array $classNames) : ?string
{
foreach ($classNames as $possibleTestClassName) {
if (!$this->reflectionProvider->hasClass($possibleTestClassName)) {
continue;
}
return $possibleTestClassName;
}
return null;
}
}

View File

@ -205,9 +205,6 @@ CODE_SAMPLE
return null;
}
$classMethodName = $this->getName($methodNode);
if ($classMethodName === null) {
return null;
}
return 'provideDataFor' . \ucfirst($classMethodName);
}
/**

View File

@ -1,23 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\RobotLoader;
use RectorPrefix20210514\Nette\Loaders\RobotLoader;
final class RobotLoaderFactory
{
/**
* @param string[] $directories
*/
public function createFromDirectories(array $directories) : \RectorPrefix20210514\Nette\Loaders\RobotLoader
{
$robotLoader = new \RectorPrefix20210514\Nette\Loaders\RobotLoader();
$robotLoader->setTempDirectory(\sys_get_temp_dir() . '/tests_add_see_rector_tests');
$robotLoader->addDirectory(...$directories);
$robotLoader->acceptFiles = ['*Test.php'];
$robotLoader->ignoreDirs[] = '*Expected*';
$robotLoader->ignoreDirs[] = '*Fixture*';
$robotLoader->ignoreDirs[] = 'templates';
return $robotLoader;
}
}

View File

@ -1,43 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\TestClassResolver;
use Rector\PHPUnit\Composer\ComposerAutoloadedDirectoryProvider;
use Rector\PHPUnit\RobotLoader\RobotLoaderFactory;
final class PHPUnitTestCaseClassesProvider
{
/**
* @var string[]
*/
private $phpUnitTestCaseClasses = [];
/**
* @var ComposerAutoloadedDirectoryProvider
*/
private $composerAutoloadedDirectoryProvider;
/**
* @var RobotLoaderFactory
*/
private $robotLoaderFactory;
public function __construct(\Rector\PHPUnit\Composer\ComposerAutoloadedDirectoryProvider $composerAutoloadedDirectoryProvider, \Rector\PHPUnit\RobotLoader\RobotLoaderFactory $robotLoaderFactory)
{
$this->composerAutoloadedDirectoryProvider = $composerAutoloadedDirectoryProvider;
$this->robotLoaderFactory = $robotLoaderFactory;
}
/**
* @return string[]
*/
public function provide() : array
{
if ($this->phpUnitTestCaseClasses !== []) {
return $this->phpUnitTestCaseClasses;
}
$directories = $this->composerAutoloadedDirectoryProvider->provide();
$robotLoader = $this->robotLoaderFactory->createFromDirectories($directories);
$robotLoader->rebuild();
foreach (\array_keys($robotLoader->getIndexedClasses()) as $className) {
$this->phpUnitTestCaseClasses[] = $className;
}
return $this->phpUnitTestCaseClasses;
}
}

View File

@ -1,88 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\PHPUnit\TestClassResolver;
use RectorPrefix20210514\Nette\Utils\Strings;
use PhpParser\Node\Stmt\Class_;
use PHPStan\Reflection\ReflectionProvider;
use Rector\NodeNameResolver\NodeNameResolver;
/**
* @see \Rector\PHPUnit\Tests\TestClassResolver\TestClassResolverTest
*/
final class TestClassResolver
{
/**
* @var string
*/
private const TEST = 'Test';
/**
* @var NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var PHPUnitTestCaseClassesProvider
*/
private $phpUnitTestCaseClassesProvider;
/**
* @var ReflectionProvider
*/
private $reflectionProvider;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\PHPUnit\TestClassResolver\PHPUnitTestCaseClassesProvider $phpUnitTestCaseClassesProvider, \PHPStan\Reflection\ReflectionProvider $reflectionProvider)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->phpUnitTestCaseClassesProvider = $phpUnitTestCaseClassesProvider;
$this->reflectionProvider = $reflectionProvider;
}
public function resolveFromClassName(string $className) : ?string
{
// fallback for unit tests that only have extra "Test" suffix
if ($this->reflectionProvider->hasClass($className . self::TEST)) {
return $className . self::TEST;
}
$shortClassName = $this->resolveShortClassName($className);
$testShortClassName = $shortClassName . self::TEST;
$phpUnitTestCaseClasses = $this->phpUnitTestCaseClassesProvider->provide();
$classNamespaceParts = $this->resolveNamespaceParts($className);
$classNamespaceParts[] = 'Tests';
\sort($classNamespaceParts);
foreach ($phpUnitTestCaseClasses as $phpUnitTestCaseClass) {
// 1. is short class match
if (!\RectorPrefix20210514\Nette\Utils\Strings::endsWith($phpUnitTestCaseClass, '\\' . $testShortClassName)) {
continue;
}
$phpUnitTestNamespaceParts = $this->resolveNamespaceParts($phpUnitTestCaseClass);
\sort($phpUnitTestNamespaceParts);
$nestedPhpUnitTestNamespaceParts = \array_merge($classNamespaceParts, [$shortClassName]);
\sort($nestedPhpUnitTestNamespaceParts);
if ($classNamespaceParts === $phpUnitTestNamespaceParts) {
return $phpUnitTestCaseClass;
}
if ($nestedPhpUnitTestNamespaceParts === $phpUnitTestNamespaceParts) {
return $phpUnitTestCaseClass;
}
return null;
}
return null;
}
public function resolveFromClass(\PhpParser\Node\Stmt\Class_ $class) : ?string
{
$className = $this->nodeNameResolver->getName($class);
if ($className === null) {
return null;
}
return $this->resolveFromClassName($className);
}
private function resolveShortClassName(string $className) : ?string
{
return \RectorPrefix20210514\Nette\Utils\Strings::after($className, '\\', -1);
}
/**
* @return string[]
*/
private function resolveNamespaceParts(string $className) : array
{
$namespacePart = (string) \RectorPrefix20210514\Nette\Utils\Strings::before($className, '\\', -1);
return \explode('\\', $namespacePart);
}
}

View File

@ -20,3 +20,23 @@ return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->import(SymfonySetList::SYMFONY_44);
};
```
### Symfony Container
To work with some Symfony rules, you now need to link your container XML file
```php
// rector.php
use Rector\Core\Configuration\Option;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(
Option::SYMFONY_CONTAINER_XML_PATH_PARAMETER,
__DIR__ . '/var/cache/dev/AppKernelDevDebugContainer.xml'
);
};
```

View File

@ -6,18 +6,19 @@
"require": {
"php": ">=7.3",
"ext-xml": "*",
"rector\/rector": "^0.10.12"
"rector\/rector": "^0.11",
"danielstjules\/stringy": "^3.1"
},
"require-dev": {
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.2",
"symplify\/phpstan-rules": "^9.3",
"symfony\/security-core": "^5.2",
"symfony\/security-http": "^5.2",
"symplify\/phpstan-extensions": "^9.2",
"symplify\/easy-coding-standard": "^9.2",
"symplify\/rule-doc-generator": "^9.2",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/rule-doc-generator": "^9.3",
"phpstan\/extension-installer": "^1.1",
"rector\/rector-phpstan-rules": "dev-main"
"rector\/rector-phpstan-rules": "^0.2.8"
},
"autoload": {
"psr-4": {
@ -43,7 +44,7 @@
},
"extra": {
"branch-alias": {
"dev-main": "0.10-dev"
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
@ -51,9 +52,6 @@
]
}
},
"conflict": {
"rector\/rector": "<=0.10.3"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -4,6 +4,7 @@ declare (strict_types=1);
namespace RectorPrefix20210514;
use Rector\Core\Configuration\Option;
use Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector;
use RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\RectorPrefix20210514\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$parameters = $containerConfigurator->parameters();
@ -11,4 +12,5 @@ return static function (\RectorPrefix20210514\Symfony\Component\DependencyInject
$services = $containerConfigurator->services();
$services->defaults()->public()->autowire()->autoconfigure();
$services->load('Rector\\Symfony\\', __DIR__ . '/../src')->exclude([__DIR__ . '/../src/{Rector,ValueObject}']);
$services->set(\Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector::class);
};

View File

@ -21,8 +21,8 @@ if (!class_exists('SomeTestCase', false) && !interface_exists('SomeTestCase', fa
if (!class_exists('CheckoutEntityFactory', false) && !interface_exists('CheckoutEntityFactory', false) && !trait_exists('CheckoutEntityFactory', false)) {
spl_autoload_call('RectorPrefix20210514\CheckoutEntityFactory');
}
if (!class_exists('ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4', false) && !interface_exists('ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4', false) && !trait_exists('ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4', false)) {
spl_autoload_call('RectorPrefix20210514\ComposerAutoloaderInit2821fef952dd3e7d5d00ee39804e18c4');
if (!class_exists('ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9', false) && !interface_exists('ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9', false) && !trait_exists('ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9', false)) {
spl_autoload_call('RectorPrefix20210514\ComposerAutoloaderInite7e48f7b8341a9e5f98b251b63d86dd9');
}
if (!class_exists('Doctrine\Inflector\Inflector', false) && !interface_exists('Doctrine\Inflector\Inflector', false) && !trait_exists('Doctrine\Inflector\Inflector', false)) {
spl_autoload_call('RectorPrefix20210514\Doctrine\Inflector\Inflector');
@ -95,9 +95,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20210514\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire2821fef952dd3e7d5d00ee39804e18c4')) {
function composerRequire2821fef952dd3e7d5d00ee39804e18c4() {
return \RectorPrefix20210514\composerRequire2821fef952dd3e7d5d00ee39804e18c4(...func_get_args());
if (!function_exists('composerRequiree7e48f7b8341a9e5f98b251b63d86dd9')) {
function composerRequiree7e48f7b8341a9e5f98b251b63d86dd9() {
return \RectorPrefix20210514\composerRequiree7e48f7b8341a9e5f98b251b63d86dd9(...func_get_args());
}
}
if (!function_exists('parseArgs')) {