From 7d2f69c19829eaf962ee9a6dc5b71195040f8819 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 1 Aug 2026 10:51:48 +0200 Subject: [PATCH] [composer-based] Bond RemoveExpectAnyFromMockRector to PHPUnit 11+ Removing expects($this->any()) leaves the mock without expectations, which is what unblocks the PHPUnit 11 mock-to-stub rules. Bond the rule to "phpunit/phpunit" >=11.0 and register it in the composer-based set. --- config/sets/composer-based.php | 2 ++ .../Rector/MethodCall/RemoveExpectAnyFromMockRector.php | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/config/sets/composer-based.php b/config/sets/composer-based.php index 73aec229..5852d088 100644 --- a/config/sets/composer-based.php +++ b/config/sets/composer-based.php @@ -16,6 +16,7 @@ use Rector\PHPUnit\CodeQuality\Rector\Class_\AddIntersectionVarToMockObjectPropertyRector; use Rector\PHPUnit\CodeQuality\Rector\Class_\AddStubIntersectionVarToStubPropertyRector; use Rector\PHPUnit\CodeQuality\Rector\ClassMethod\BareCreateMockAssignToDirectUseRector; +use Rector\PHPUnit\CodeQuality\Rector\MethodCall\RemoveExpectAnyFromMockRector; use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector; use Rector\PHPUnit\PHPUnit110\Rector\ClassMethod\ExpectsParamToMockObjectRector; use Rector\PHPUnit\PHPUnit110\Rector\ClassMethod\MockObjectArgCreateStubToCreateMockRector; @@ -60,6 +61,7 @@ AddIntersectionVarToMockObjectPropertyRector::class, AddStubIntersectionVarToStubPropertyRector::class, BareCreateMockAssignToDirectUseRector::class, + RemoveExpectAnyFromMockRector::class, // mocks back over stubs, where a mock object is required MockObjectArgCreateStubToCreateMockRector::class, diff --git a/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php b/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php index 11fe9115..2055c38e 100644 --- a/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php +++ b/rules/CodeQuality/Rector/MethodCall/RemoveExpectAnyFromMockRector.php @@ -9,6 +9,8 @@ use PhpParser\Node\Expr\MethodCall; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\Rector\AbstractRector; +use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface; +use Rector\VersionBonding\ValueObject\ComposerPackageConstraint; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -16,13 +18,18 @@ * @changelog https://github.com/symfony/symfony/pull/30813/files#r270879504 * @see \Rector\PHPUnit\Tests\CodeQuality\Rector\MethodCall\RemoveExpectAnyFromMockRector\RemoveExpectAnyFromMockRectorTest */ -final class RemoveExpectAnyFromMockRector extends AbstractRector +final class RemoveExpectAnyFromMockRector extends AbstractRector implements ComposerPackageConstraintInterface { public function __construct( private readonly TestsNodeAnalyzer $testsNodeAnalyzer ) { } + public function provideComposerPackageConstraint(): ComposerPackageConstraint + { + return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0'); + } + public function getRuleDefinition(): RuleDefinition { return new RuleDefinition(