From a2cb0a44e94fdfed2837d322bd81783c03d92cb3 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 5 Aug 2026 21:28:25 +0200 Subject: [PATCH 1/4] [Sets] Drop DoctrineSetProvider from the collector --- src/Bridge/SetProviderCollector.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Bridge/SetProviderCollector.php b/src/Bridge/SetProviderCollector.php index 2697ec553c4..a6c70670f03 100644 --- a/src/Bridge/SetProviderCollector.php +++ b/src/Bridge/SetProviderCollector.php @@ -4,7 +4,6 @@ namespace Rector\Bridge; -use Rector\Doctrine\Set\SetProvider\DoctrineSetProvider; use Rector\Set\Contract\SetInterface; use Rector\Set\Contract\SetProviderInterface; use Rector\Set\SetProvider\CoreSetProvider; @@ -33,7 +32,6 @@ public function __construct(array $extraSetProviders = []) // register all known set providers here new PHPSetProvider(), new CoreSetProvider(), - new DoctrineSetProvider(), new TwigSetProvider(), ]; From 2b141523056dfef633a78714426ccd55dda27682 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 5 Aug 2026 21:51:41 +0200 Subject: [PATCH 2/4] [Sets] Drop TwigSetProvider from the collector --- src/Bridge/SetProviderCollector.php | 2 -- tests/Set/SetManager/SetManagerTest.php | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Bridge/SetProviderCollector.php b/src/Bridge/SetProviderCollector.php index a6c70670f03..b34d0f01f6a 100644 --- a/src/Bridge/SetProviderCollector.php +++ b/src/Bridge/SetProviderCollector.php @@ -9,7 +9,6 @@ use Rector\Set\SetProvider\CoreSetProvider; use Rector\Set\SetProvider\PHPSetProvider; use Rector\Set\ValueObject\ComposerTriggeredSet; -use Rector\Symfony\Set\SetProvider\TwigSetProvider; /** * @api @@ -32,7 +31,6 @@ public function __construct(array $extraSetProviders = []) // register all known set providers here new PHPSetProvider(), new CoreSetProvider(), - new TwigSetProvider(), ]; $this->setProviders = array_merge($setProviders, $extraSetProviders); diff --git a/tests/Set/SetManager/SetManagerTest.php b/tests/Set/SetManager/SetManagerTest.php index 9a29ff4f510..021082c6cde 100644 --- a/tests/Set/SetManager/SetManagerTest.php +++ b/tests/Set/SetManager/SetManagerTest.php @@ -10,6 +10,7 @@ use Rector\Composer\InstalledPackageResolver; use Rector\Set\Enum\SetGroup; use Rector\Set\SetManager; +use Rector\Symfony\Set\SetProvider\TwigSetProvider; use Rector\Symfony\Set\TwigSetList; use Rector\Testing\PHPUnit\AbstractLazyTestCase; @@ -53,7 +54,7 @@ public static function provideInstalledTwigData(): Iterator private function createSetManagerWithProjectDirectory(string $projectDirectory): SetManager { - $setProviderCollector = new SetProviderCollector(); + $setProviderCollector = new SetProviderCollector([new TwigSetProvider()]); $installedPackageResolver = new InstalledPackageResolver($projectDirectory); return new SetManager($setProviderCollector, $installedPackageResolver); From baa835e1644aee0022b68cbccfb0354aae365b44 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 5 Aug 2026 22:13:05 +0200 Subject: [PATCH 3/4] cleanup --- src/Configuration/RectorConfigBuilder.php | 1 - src/Set/Enum/SetGroup.php | 15 ----- tests/Set/SetManager/SetManagerTest.php | 5 +- .../ValueObject/ComposerTriggeredSetTest.php | 61 ------------------- 4 files changed, 2 insertions(+), 80 deletions(-) delete mode 100644 tests/Set/ValueObject/ComposerTriggeredSetTest.php diff --git a/src/Configuration/RectorConfigBuilder.php b/src/Configuration/RectorConfigBuilder.php index dc47d11e396..c3d114e7687 100644 --- a/src/Configuration/RectorConfigBuilder.php +++ b/src/Configuration/RectorConfigBuilder.php @@ -737,7 +737,6 @@ public function withComposerBased( bool $drupal = false, ): self { $setMap = [ - SetGroup::TWIG => $twig, SetGroup::DOCTRINE => $doctrine, SetGroup::LARAVEL => $laravel, SetGroup::DRUPAL => $drupal, diff --git a/src/Set/Enum/SetGroup.php b/src/Set/Enum/SetGroup.php index 06d83d4a18f..2863c045c69 100644 --- a/src/Set/Enum/SetGroup.php +++ b/src/Set/Enum/SetGroup.php @@ -13,26 +13,11 @@ final class SetGroup public const string PHP = 'php'; - /** - * Version-based set provider - */ - public const string TWIG = 'twig'; - - /** - * Version-based set provider - */ - public const string PHPUNIT = 'phpunit'; - /** * Version-based set provider */ public const string DOCTRINE = 'doctrine'; - /** - * Version-based set provider - */ - public const string SYMFONY = 'symfony'; - /** * Version-based set provider */ diff --git a/tests/Set/SetManager/SetManagerTest.php b/tests/Set/SetManager/SetManagerTest.php index 021082c6cde..8f039cf8be0 100644 --- a/tests/Set/SetManager/SetManagerTest.php +++ b/tests/Set/SetManager/SetManagerTest.php @@ -10,7 +10,6 @@ use Rector\Composer\InstalledPackageResolver; use Rector\Set\Enum\SetGroup; use Rector\Set\SetManager; -use Rector\Symfony\Set\SetProvider\TwigSetProvider; use Rector\Symfony\Set\TwigSetList; use Rector\Testing\PHPUnit\AbstractLazyTestCase; @@ -32,7 +31,7 @@ public function testByVersion(string $projectDirectory, array $expectedSets): vo { $setManager = $this->createSetManagerWithProjectDirectory($projectDirectory); - $composerTriggeredSets = $setManager->matchBySetGroups([SetGroup::TWIG]); + $composerTriggeredSets = $setManager->matchBySetGroups([SetGroup::LARAVEL]); $this->assertCount(count($expectedSets), $composerTriggeredSets); $this->assertSame($expectedSets, $composerTriggeredSets); @@ -54,7 +53,7 @@ public static function provideInstalledTwigData(): Iterator private function createSetManagerWithProjectDirectory(string $projectDirectory): SetManager { - $setProviderCollector = new SetProviderCollector([new TwigSetProvider()]); + $setProviderCollector = new SetProviderCollector([]); $installedPackageResolver = new InstalledPackageResolver($projectDirectory); return new SetManager($setProviderCollector, $installedPackageResolver); diff --git a/tests/Set/ValueObject/ComposerTriggeredSetTest.php b/tests/Set/ValueObject/ComposerTriggeredSetTest.php deleted file mode 100644 index a735f876404..00000000000 --- a/tests/Set/ValueObject/ComposerTriggeredSetTest.php +++ /dev/null @@ -1,61 +0,0 @@ - new InstalledPackage('phpunit/phpunit', $installedVersion), - ]; - - $this->assertSame($expectedMatch, $composerTriggeredSet->matchInstalledPackages($installedPackages)); - } - - public static function provideData(): Iterator - { - // a bare version keeps the "this major version" behaviour - yield ['10.0', '10.5.0.0', true]; - yield ['10.0', '11.0.0.0', false]; - yield ['10.0', '9.6.0.0', false]; - - // a constraint is used as is - yield ['>=10.0', '13.2.0.0', true]; - yield ['>=10.0', '9.6.0.0', false]; - yield ['>=10.0 <13.0', '12.5.0.0', true]; - yield ['>=10.0 <13.0', '13.0.0.0', false]; - } - - public function testSkipNotInstalledPackage(): void - { - $composerTriggeredSet = new ComposerTriggeredSet( - SetGroup::PHPUNIT, - 'phpunit/phpunit', - '>=10.0', - __FILE__ - ); - - $this->assertFalse($composerTriggeredSet->matchInstalledPackages([])); - } -} From e12200b214fd387136852d84df44e21676f4cb72 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 5 Aug 2026 22:13:59 +0200 Subject: [PATCH 4/4] cleanup --- .../vendor/composer/installed.json | 9 --- .../vendor/composer/installed.json | 9 --- .../vendor/composer/installed.json | 9 --- tests/Set/SetManager/SetManagerTest.php | 61 ------------------- .../Set/SetManager/Source/SomeSetProvider.php | 24 -------- 5 files changed, 112 deletions(-) delete mode 100644 tests/Set/SetManager/Fixture/project-twig-127/vendor/composer/installed.json delete mode 100644 tests/Set/SetManager/Fixture/project-twig-20/vendor/composer/installed.json delete mode 100644 tests/Set/SetManager/Fixture/project-twig-24/vendor/composer/installed.json delete mode 100644 tests/Set/SetManager/SetManagerTest.php delete mode 100644 tests/Set/SetManager/Source/SomeSetProvider.php diff --git a/tests/Set/SetManager/Fixture/project-twig-127/vendor/composer/installed.json b/tests/Set/SetManager/Fixture/project-twig-127/vendor/composer/installed.json deleted file mode 100644 index b75daeeb383..00000000000 --- a/tests/Set/SetManager/Fixture/project-twig-127/vendor/composer/installed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "packages": [ - { - "name": "twig/twig", - "version": "v1.27.0", - "version_normalized": "1.27.0.0" - } - ] -} diff --git a/tests/Set/SetManager/Fixture/project-twig-20/vendor/composer/installed.json b/tests/Set/SetManager/Fixture/project-twig-20/vendor/composer/installed.json deleted file mode 100644 index fffd4b3a2b9..00000000000 --- a/tests/Set/SetManager/Fixture/project-twig-20/vendor/composer/installed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "packages": [ - { - "name": "twig/twig", - "version": "v2.0.0", - "version_normalized": "2.0.0.0" - } - ] -} diff --git a/tests/Set/SetManager/Fixture/project-twig-24/vendor/composer/installed.json b/tests/Set/SetManager/Fixture/project-twig-24/vendor/composer/installed.json deleted file mode 100644 index d29f2edb5ff..00000000000 --- a/tests/Set/SetManager/Fixture/project-twig-24/vendor/composer/installed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "packages": [ - { - "name": "twig/twig", - "version": "v2.4.0", - "version_normalized": "2.4.0.0" - } - ] -} diff --git a/tests/Set/SetManager/SetManagerTest.php b/tests/Set/SetManager/SetManagerTest.php deleted file mode 100644 index 8f039cf8be0..00000000000 --- a/tests/Set/SetManager/SetManagerTest.php +++ /dev/null @@ -1,61 +0,0 @@ -createSetManagerWithProjectDirectory(getcwd()); - - $twigComposerTriggeredSet = $setManager->matchComposerTriggered(SetGroup::TWIG); - $this->assertCount(1, $twigComposerTriggeredSet); - } - - /** - * @param string[] $expectedSets - */ - #[DataProvider('provideInstalledTwigData')] - public function testByVersion(string $projectDirectory, array $expectedSets): void - { - $setManager = $this->createSetManagerWithProjectDirectory($projectDirectory); - - $composerTriggeredSets = $setManager->matchBySetGroups([SetGroup::LARAVEL]); - - $this->assertCount(count($expectedSets), $composerTriggeredSets); - $this->assertSame($expectedSets, $composerTriggeredSets); - } - - /** - * @return Iterator<(array>|array>|array>|array)> - */ - public static function provideInstalledTwigData(): Iterator - { - // the composer-based set covers every Twig version, as each rule inside it is bound - // to the exact twig/twig version it needs - yield [__DIR__ . '/Fixture/project-twig-20', [realpath(TwigSetList::COMPOSER_BASED)]]; - - yield [__DIR__ . '/Fixture/project-twig-24', [realpath(TwigSetList::COMPOSER_BASED)]]; - - yield [__DIR__ . '/Fixture/project-twig-127', [realpath(TwigSetList::COMPOSER_BASED)]]; - } - - private function createSetManagerWithProjectDirectory(string $projectDirectory): SetManager - { - $setProviderCollector = new SetProviderCollector([]); - $installedPackageResolver = new InstalledPackageResolver($projectDirectory); - - return new SetManager($setProviderCollector, $installedPackageResolver); - } -} diff --git a/tests/Set/SetManager/Source/SomeSetProvider.php b/tests/Set/SetManager/Source/SomeSetProvider.php deleted file mode 100644 index 9999c095677..00000000000 --- a/tests/Set/SetManager/Source/SomeSetProvider.php +++ /dev/null @@ -1,24 +0,0 @@ -