From f3a9bcbaeca2e1d3c1119ab0ca7cf1eaa9c5e791 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 31 Jan 2025 14:49:02 +0100 Subject: [PATCH 1/2] covert assertNotNull() in AssertEmptyNullableObjectToAssertInstanceofRector --- .../Fixture/include_assert_not_null.php.inc | 37 +++++++++++++++++++ .../Fixture/include_assert_null.php.inc | 37 +++++++++++++++++++ .../AssertFuncCallToPHPUnitAssertRector.php | 1 + ...NullableObjectToAssertInstanceofRector.php | 12 ++++-- 4 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_not_null.php.inc create mode 100644 rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_null.php.inc diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_not_null.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_not_null.php.inc new file mode 100644 index 00000000..d54bd5f3 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_not_null.php.inc @@ -0,0 +1,37 @@ +assertNotNull($someObject); + } +} + +?> +----- +assertInstanceOf(\CodeQuality\Rector\MethodCall\AssertEmptyNullableObjectToAssertInstanceofRector\Source\SomeTypeObject::class, $someObject); + } +} + +?> diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_null.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_null.php.inc new file mode 100644 index 00000000..cdfa8580 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/include_assert_null.php.inc @@ -0,0 +1,37 @@ +assertNull($someObject); + } +} + +?> +----- +assertNotInstanceOf(\CodeQuality\Rector\MethodCall\AssertEmptyNullableObjectToAssertInstanceofRector\Source\SomeTypeObject::class, $someObject); + } +} + +?> diff --git a/rules/CodeQuality/Rector/FuncCall/AssertFuncCallToPHPUnitAssertRector.php b/rules/CodeQuality/Rector/FuncCall/AssertFuncCallToPHPUnitAssertRector.php index 50508fa6..3389b304 100644 --- a/rules/CodeQuality/Rector/FuncCall/AssertFuncCallToPHPUnitAssertRector.php +++ b/rules/CodeQuality/Rector/FuncCall/AssertFuncCallToPHPUnitAssertRector.php @@ -149,6 +149,7 @@ private function isTestFilePath(FuncCall $funcCall): bool if (str_ends_with($className, 'Test')) { return true; } + return str_ends_with($className, 'TestCase'); } diff --git a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php index 294e8e6a..f7b5b0c0 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php @@ -30,7 +30,9 @@ public function __construct( public function getRuleDefinition(): RuleDefinition { - return new RuleDefinition('Change assertNotEmpty() on an object to more clear assertInstanceof()', [ + return new RuleDefinition( + 'Change assertNotEmpty() and assertNotNull() on an object to more clear assertInstanceof()', + [ new CodeSample( <<<'CODE_SAMPLE' use PHPUnit\Framework\TestCase; @@ -61,6 +63,7 @@ public function test() } CODE_SAMPLE ), + ]); } @@ -81,7 +84,7 @@ public function refactor(Node $node): ?Node return null; } - if (! $this->isNames($node->name, ['assertNotEmpty', 'assertEmpty'])) { + if (! $this->isNames($node->name, ['assertNotEmpty', 'assertEmpty', 'assertNull', 'assertNotNull'])) { return null; } @@ -105,7 +108,10 @@ public function refactor(Node $node): ?Node return null; } - $methodName = $this->isName($node->name, 'assertEmpty') ? 'assertNotInstanceOf' : 'assertInstanceOf'; + $methodName = $this->isNames( + $node->name, + ['assertEmpty', 'assertNull'] + ) ? 'assertNotInstanceOf' : 'assertInstanceOf'; $node->name = new Identifier($methodName); From f0dcad89afdcde8411fcf14409dc4d86ab6a3122 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 31 Jan 2025 13:52:48 +0000 Subject: [PATCH 2/2] [ci-review] Rector Rectify --- ...mptyNullableObjectToAssertInstanceofRector.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php index f7b5b0c0..1edefd41 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php @@ -33,8 +33,8 @@ public function getRuleDefinition(): RuleDefinition return new RuleDefinition( 'Change assertNotEmpty() and assertNotNull() on an object to more clear assertInstanceof()', [ - new CodeSample( - <<<'CODE_SAMPLE' + new CodeSample( + <<<'CODE_SAMPLE' use PHPUnit\Framework\TestCase; class SomeClass extends TestCase @@ -48,8 +48,8 @@ public function test() } CODE_SAMPLE - , - <<<'CODE_SAMPLE' + , + <<<'CODE_SAMPLE' use PHPUnit\Framework\TestCase; class SomeClass extends TestCase @@ -62,9 +62,10 @@ public function test() } } CODE_SAMPLE - ), - - ]); + ), + + ] + ); } /**