From ba900d9726f783b653bcf15aa4d235f574b21b67 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 31 Jul 2026 21:08:16 +0200 Subject: [PATCH] Move composer version bound rules to composer-based set, drop repeated registrations from version sets --- config/sets/composer-based.php | 17 +++++++++++++++-- config/sets/phpunit110.php | 16 ++++++---------- config/sets/phpunit120.php | 11 ++--------- config/sets/phpunit130.php | 11 ++++------- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/config/sets/composer-based.php b/config/sets/composer-based.php index 6f9ea7f0..286bfacd 100644 --- a/config/sets/composer-based.php +++ b/config/sets/composer-based.php @@ -12,11 +12,17 @@ use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\DataProviderAnnotationToAttributeRector; use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\DependsAnnotationWithValueToAttributeRector; use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\TestWithAnnotationToAttributeRector; +use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector; +use Rector\PHPUnit\PHPUnit110\Rector\ClassMethod\MockObjectArgCreateStubToCreateMockRector; +use Rector\PHPUnit\PHPUnit120\Rector\Class_\AssertIsTypeMethodCallRector; use Rector\PHPUnit\ValueObject\AnnotationWithValueToAttribute; /** - * Annotation to attribute pairs bound to the PHPUnit version installed in the analysed project, - * as not every attribute exists in every PHPUnit version. + * Rules and configuration bound to the PHPUnit version installed in the analysed project, + * as not every attribute and method exists in every PHPUnit version. + * + * Thanks to the composer package constraint, these rules can be registered once here, instead of being + * repeated in every PHPUnit version set to cover a direct upgrade from an older version. */ return static function (RectorConfig $rectorConfig): void { // each of these rules declares the "phpunit/phpunit" version its attributes were added in, @@ -28,6 +34,13 @@ CoversAnnotationWithValueToAttributeRector::class, RequiresAnnotationWithValueToAttributeRector::class, DependsAnnotationWithValueToAttributeRector::class, + + // stubs are required over mocks since PHPUnit 11.0 + MockObjectArgCreateStubToCreateMockRector::class, + + // deprecated in PHPUnit 11.5 + AssertContainsOnlyMethodCallRector::class, + AssertIsTypeMethodCallRector::class, ]); // both attributes were added in PHPUnit 10.0 diff --git a/config/sets/phpunit110.php b/config/sets/phpunit110.php index dc10c6f2..9306f4d3 100644 --- a/config/sets/phpunit110.php +++ b/config/sets/phpunit110.php @@ -3,17 +3,13 @@ declare(strict_types=1); use Rector\Config\RectorConfig; -use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector; use Rector\PHPUnit\PHPUnit110\Rector\Class_\NamedArgumentForDataProviderRector; -use Rector\PHPUnit\PHPUnit110\Rector\ClassMethod\MockObjectArgCreateStubToCreateMockRector; -use Rector\PHPUnit\PHPUnit120\Rector\Class_\AssertIsTypeMethodCallRector; +use Rector\PHPUnit\Set\PHPUnitSetList; return static function (RectorConfig $rectorConfig): void { - $rectorConfig->rules([ - NamedArgumentForDataProviderRector::class, - MockObjectArgCreateStubToCreateMockRector::class, - // deprecated in PHPUnit 11.5, guarded by composer package constraint - AssertContainsOnlyMethodCallRector::class, - AssertIsTypeMethodCallRector::class, - ]); + // MockObjectArgCreateStubToCreateMockRector, AssertContainsOnlyMethodCallRector + // and AssertIsTypeMethodCallRector are registered there, guarded by composer package constraint + $rectorConfig->sets([PHPUnitSetList::COMPOSER_BASED]); + + $rectorConfig->rules([NamedArgumentForDataProviderRector::class]); }; diff --git a/config/sets/phpunit120.php b/config/sets/phpunit120.php index ec165330..520e38c6 100644 --- a/config/sets/phpunit120.php +++ b/config/sets/phpunit120.php @@ -3,18 +3,11 @@ declare(strict_types=1); use Rector\Config\RectorConfig; -use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector; -use Rector\PHPUnit\PHPUnit120\Rector\Class_\AssertIsTypeMethodCallRector; use Rector\PHPUnit\PHPUnit120\Rector\Class_\RemoveOverrideFinalConstructTestCaseRector; use Rector\PHPUnit\Set\PHPUnitSetList; return static function (RectorConfig $rectorConfig): void { - $rectorConfig->sets([PHPUnitSetList::PHPUNIT_MOCK_TO_STUB]); + $rectorConfig->sets([PHPUnitSetList::PHPUNIT_MOCK_TO_STUB, PHPUnitSetList::COMPOSER_BASED]); - $rectorConfig->rules([ - RemoveOverrideFinalConstructTestCaseRector::class, - // deprecated in PHPUnit 11.5, repeated here for a direct 11.4 → 12.0 upgrade - AssertContainsOnlyMethodCallRector::class, - AssertIsTypeMethodCallRector::class, - ]); + $rectorConfig->rules([RemoveOverrideFinalConstructTestCaseRector::class]); }; diff --git a/config/sets/phpunit130.php b/config/sets/phpunit130.php index 0053d3ef..47e20d16 100644 --- a/config/sets/phpunit130.php +++ b/config/sets/phpunit130.php @@ -3,17 +3,14 @@ declare(strict_types=1); use Rector\Config\RectorConfig; -use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector; -use Rector\PHPUnit\PHPUnit120\Rector\Class_\AssertIsTypeMethodCallRector; +use Rector\PHPUnit\Set\PHPUnitSetList; use Rector\Renaming\Rector\MethodCall\RenameMethodRector; use Rector\Renaming\ValueObject\MethodCallRename; return static function (RectorConfig $rectorConfig): void { - $rectorConfig->rules([ - // deprecated in PHPUnit 11.5, repeated here for a direct upgrade from an older version - AssertContainsOnlyMethodCallRector::class, - AssertIsTypeMethodCallRector::class, - ]); + // AssertContainsOnlyMethodCallRector and AssertIsTypeMethodCallRector are registered there, + // guarded by composer package constraint + $rectorConfig->sets([PHPUnitSetList::COMPOSER_BASED]); $rectorConfig->ruleWithConfiguration(RenameMethodRector::class, [ // @see https://github.com/sebastianbergmann/phpunit/issues/6560