Skip to content

Commit 94a0237

Browse files
authored
Bond stub and mock rules to phpunit/phpunit >=11.0 (#750)
1 parent 78d3580 commit 94a0237

9 files changed

Lines changed: 83 additions & 9 deletions

‎config/sets/composer-based.php‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,17 @@
1212
use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\DataProviderAnnotationToAttributeRector;
1313
use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\DependsAnnotationWithValueToAttributeRector;
1414
use Rector\PHPUnit\AnnotationsToAttributes\Rector\ClassMethod\TestWithAnnotationToAttributeRector;
15+
use Rector\PHPUnit\CodeQuality\Rector\Class_\AddIntersectionVarToMockObjectPropertyRector;
16+
use Rector\PHPUnit\CodeQuality\Rector\Class_\AddStubIntersectionVarToStubPropertyRector;
17+
use Rector\PHPUnit\CodeQuality\Rector\ClassMethod\BareCreateMockAssignToDirectUseRector;
1518
use Rector\PHPUnit\PHPUnit110\Rector\CallLike\AssertContainsOnlyMethodCallRector;
1619
use Rector\PHPUnit\PHPUnit110\Rector\ClassMethod\MockObjectArgCreateStubToCreateMockRector;
20+
use Rector\PHPUnit\PHPUnit120\Rector\CallLike\CreateStubInCoalesceArgRector;
21+
use Rector\PHPUnit\PHPUnit120\Rector\CallLike\CreateStubOverCreateMockArgRector;
1722
use Rector\PHPUnit\PHPUnit120\Rector\Class_\AssertIsTypeMethodCallRector;
23+
use Rector\PHPUnit\PHPUnit120\Rector\Class_\PropertyCreateMockToCreateStubRector;
24+
use Rector\PHPUnit\PHPUnit120\Rector\ClassMethod\ExpressionCreateMockToCreateStubRector;
25+
use Rector\PHPUnit\PHPUnit120\Rector\Property\MockObjectVarToStubRector;
1826
use Rector\PHPUnit\ValueObject\AnnotationWithValueToAttribute;
1927

2028
/**
@@ -35,7 +43,17 @@
3543
RequiresAnnotationWithValueToAttributeRector::class,
3644
DependsAnnotationWithValueToAttributeRector::class,
3745

38-
// stubs are required over mocks since PHPUnit 11.0
46+
// stubs over mocks, where no expectations are set, since PHPUnit 11.0
47+
CreateStubOverCreateMockArgRector::class,
48+
CreateStubInCoalesceArgRector::class,
49+
ExpressionCreateMockToCreateStubRector::class,
50+
PropertyCreateMockToCreateStubRector::class,
51+
MockObjectVarToStubRector::class,
52+
AddIntersectionVarToMockObjectPropertyRector::class,
53+
AddStubIntersectionVarToStubPropertyRector::class,
54+
BareCreateMockAssignToDirectUseRector::class,
55+
56+
// mocks back over stubs, where a mock object is required
3957
MockObjectArgCreateStubToCreateMockRector::class,
4058

4159
// deprecated in PHPUnit 11.5

‎rules/CodeQuality/Rector/ClassMethod/BareCreateMockAssignToDirectUseRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@
2323
use Rector\PHPUnit\CodeQuality\NodeFinder\VariableFinder;
2424
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
2525
use Rector\Rector\AbstractRector;
26+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
27+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
2628
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2729
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2830

2931
/**
3032
* @see \Rector\PHPUnit\Tests\CodeQuality\Rector\ClassMethod\BareCreateMockAssignToDirectUseRector\BareCreateMockAssignToDirectUseRectorTest
3133
*/
32-
final class BareCreateMockAssignToDirectUseRector extends AbstractRector
34+
final class BareCreateMockAssignToDirectUseRector extends AbstractRector implements ComposerPackageConstraintInterface
3335
{
3436
public function __construct(
3537
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
@@ -40,6 +42,11 @@ public function __construct(
4042
) {
4143
}
4244

45+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
46+
{
47+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
48+
}
49+
4350
public function getRuleDefinition(): RuleDefinition
4451
{
4552
return new RuleDefinition(

‎rules/CodeQuality/Rector/Class_/AddIntersectionVarToMockObjectPropertyRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@
2222
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
2323
use Rector\Rector\AbstractRector;
2424
use Rector\ValueObject\MethodName;
25+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
26+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
2527
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2628
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2729

2830
/**
2931
* @see \Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\AddIntersectionVarToMockObjectPropertyRector\AddIntersectionVarToMockObjectPropertyRectorTest
3032
*/
31-
final class AddIntersectionVarToMockObjectPropertyRector extends AbstractRector
33+
final class AddIntersectionVarToMockObjectPropertyRector extends AbstractRector implements ComposerPackageConstraintInterface
3234
{
3335
public function __construct(
3436
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
@@ -107,6 +109,11 @@ public function refactor(Node $node): ?Class_
107109
return $node;
108110
}
109111

112+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
113+
{
114+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
115+
}
116+
110117
public function getRuleDefinition(): RuleDefinition
111118
{
112119
return new RuleDefinition(

‎rules/CodeQuality/Rector/Class_/AddStubIntersectionVarToStubPropertyRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@
2222
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
2323
use Rector\Rector\AbstractRector;
2424
use Rector\ValueObject\MethodName;
25+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
26+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
2527
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2628
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2729

2830
/**
2931
* @see \Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\AddStubIntersectionVarToStubPropertyRector\AddStubIntersectionVarToStubPropertyRectorTest
3032
*/
31-
final class AddStubIntersectionVarToStubPropertyRector extends AbstractRector
33+
final class AddStubIntersectionVarToStubPropertyRector extends AbstractRector implements ComposerPackageConstraintInterface
3234
{
3335
public function __construct(
3436
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
@@ -94,6 +96,11 @@ public function refactor(Node $node): ?Class_
9496
return $node;
9597
}
9698

99+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
100+
{
101+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
102+
}
103+
97104
public function getRuleDefinition(): RuleDefinition
98105
{
99106
return new RuleDefinition(

‎rules/PHPUnit120/Rector/CallLike/CreateStubInCoalesceArgRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
use PhpParser\Node\Identifier;
1414
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
1515
use Rector\Rector\AbstractRector;
16+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
17+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
1618
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1719
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1820

@@ -21,13 +23,18 @@
2123
*
2224
* @see \Rector\PHPUnit\Tests\PHPUnit120\Rector\CallLike\CreateStubInCoalesceArgRector\CreateStubInCoalesceArgRectorTest
2325
*/
24-
final class CreateStubInCoalesceArgRector extends AbstractRector
26+
final class CreateStubInCoalesceArgRector extends AbstractRector implements ComposerPackageConstraintInterface
2527
{
2628
public function __construct(
2729
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
2830
) {
2931
}
3032

33+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
34+
{
35+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
36+
}
37+
3138
public function getRuleDefinition(): RuleDefinition
3239
{
3340
return new RuleDefinition(

‎rules/PHPUnit120/Rector/CallLike/CreateStubOverCreateMockArgRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
3030
use Rector\Rector\AbstractRector;
3131
use Rector\Reflection\ReflectionResolver;
32+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
33+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
3234
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
3335
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
3436

@@ -37,7 +39,7 @@
3739
*
3840
* @see \Rector\PHPUnit\Tests\PHPUnit120\Rector\CallLike\CreateStubOverCreateMockArgRector\CreateStubOverCreateMockArgRectorTest
3941
*/
40-
final class CreateStubOverCreateMockArgRector extends AbstractRector
42+
final class CreateStubOverCreateMockArgRector extends AbstractRector implements ComposerPackageConstraintInterface
4143
{
4244
public function __construct(
4345
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
@@ -46,6 +48,11 @@ public function __construct(
4648
) {
4749
}
4850

51+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
52+
{
53+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
54+
}
55+
4956
public function getRuleDefinition(): RuleDefinition
5057
{
5158
return new RuleDefinition(

‎rules/PHPUnit120/Rector/ClassMethod/ExpressionCreateMockToCreateStubRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
use Rector\PHPUnit\CodeQuality\NodeAnalyser\MockObjectExprDetector;
1717
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
1818
use Rector\Rector\AbstractRector;
19+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
20+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
1921
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2022
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2123

2224
/**
2325
* @see \Rector\PHPUnit\Tests\PHPUnit120\Rector\ClassMethod\ExpressionCreateMockToCreateStubRector\ExpressionCreateMockToCreateStubRectorTest
2426
*/
25-
final class ExpressionCreateMockToCreateStubRector extends AbstractRector
27+
final class ExpressionCreateMockToCreateStubRector extends AbstractRector implements ComposerPackageConstraintInterface
2628
{
2729
public function __construct(
2830
private readonly AssignedMocksCollector $assignedMocksCollector,
@@ -31,6 +33,11 @@ public function __construct(
3133
) {
3234
}
3335

36+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
37+
{
38+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
39+
}
40+
3441
public function getRuleDefinition(): RuleDefinition
3542
{
3643
return new RuleDefinition(

‎rules/PHPUnit120/Rector/Class_/PropertyCreateMockToCreateStubRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
1818
use Rector\Rector\AbstractRector;
1919
use Rector\ValueObject\MethodName;
20+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
21+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
2022
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2123
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2224

@@ -25,7 +27,7 @@
2527
*
2628
* @see https://github.com/sebastianbergmann/phpunit/commit/24c208d6a340c3071f28a9b5cce02b9377adfd43
2729
*/
28-
final class PropertyCreateMockToCreateStubRector extends AbstractRector
30+
final class PropertyCreateMockToCreateStubRector extends AbstractRector implements ComposerPackageConstraintInterface
2931
{
3032
public function __construct(
3133
private readonly TestsNodeAnalyzer $testsNodeAnalyzer,
@@ -82,6 +84,11 @@ public function refactor(Node $node): ?Class_
8284
return $node;
8385
}
8486

87+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
88+
{
89+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
90+
}
91+
8592
public function getRuleDefinition(): RuleDefinition
8693
{
8794
return new RuleDefinition(

‎rules/PHPUnit120/Rector/Property/MockObjectVarToStubRector.php‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
use Rector\PHPUnit\Enum\PHPUnitClassName;
2020
use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer;
2121
use Rector\Rector\AbstractRector;
22+
use Rector\VersionBonding\Contract\ComposerPackageConstraintInterface;
23+
use Rector\VersionBonding\ValueObject\ComposerPackageConstraint;
2224
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2325
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2426

2527
/**
2628
* @see \Rector\PHPUnit\Tests\PHPUnit120\Rector\Property\MockObjectVarToStubRector\MockObjectVarToStubRectorTest
2729
*/
28-
final class MockObjectVarToStubRector extends AbstractRector
30+
final class MockObjectVarToStubRector extends AbstractRector implements ComposerPackageConstraintInterface
2931
{
3032
public function __construct(
3133
private readonly PhpDocInfoFactory $phpDocInfoFactory,
@@ -73,6 +75,11 @@ public function refactor(Node $node): ?Property
7375
return $node;
7476
}
7577

78+
public function provideComposerPackageConstraint(): ComposerPackageConstraint
79+
{
80+
return new ComposerPackageConstraint('phpunit/phpunit', '>=11.0');
81+
}
82+
7683
public function getRuleDefinition(): RuleDefinition
7784
{
7885
return new RuleDefinition(

0 commit comments

Comments
 (0)