From d9c35826775514c85973252fca2a333dea57e73e Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 21 Jan 2025 19:35:16 +0000 Subject: [PATCH 1/2] Add str_contains() support to AssertTrueFalseToSpecificMethodRector --- .../Fixture/include_str_contains.php.inc | 31 +++++++++++++++++++ .../AssertTrueFalseToSpecificMethodRector.php | 5 ++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc new file mode 100644 index 00000000..dadc55ca --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector/Fixture/include_str_contains.php.inc @@ -0,0 +1,31 @@ +assertTrue(str_contains('haystack', 'needle')); + + $this->assertFalse(str_contains('haystack 2', 'needle 2')); + } +} + +?> +----- +assertStringContainsString('needle', 'haystack'); + + $this->assertStringNotContainsString('needle 2', 'haystack 2'); + } +} + +?> diff --git a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php index 824ea245..e8fa5643 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php @@ -39,6 +39,7 @@ final class AssertTrueFalseToSpecificMethodRector extends AbstractRector 'is_writable' => ['is_writable', 'assertIsWritable', 'assertNotIsWritable'], 'is_nan' => ['is_nan', 'assertNan', ''], 'is_a' => ['is_a', 'assertInstanceOf', 'assertNotInstanceOf'], + 'str_contains' => ['str_contains', 'assertStringContainsString', 'assertStringNotContainsString'], ]; public function __construct( @@ -181,6 +182,7 @@ private function moveFunctionArgumentsUp(MethodCall|StaticCall $node): void return; } + $funcCallOrEmptyNodeArgs = $funcCallOrEmptyNode->getArgs(); $oldArguments = $node->getArgs(); unset($oldArguments[0]); @@ -214,7 +216,8 @@ private function buildNewArguments( return [...$funcCallOrEmptyNodeArgs, ...$oldArguments]; } - if ($funcCallOrEmptyNodeName === 'is_a') { + if (in_array($funcCallOrEmptyNodeName, ['is_a', 'str_contains'])) { + // flip arguments $newArgs = [$funcCallOrEmptyNodeArgs[1], $funcCallOrEmptyNodeArgs[0]]; return [...$newArgs, ...$oldArguments]; From a5d63eff4ea27c28569f915ab8d2fb6fdd68533b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 21 Jan 2025 19:38:24 +0000 Subject: [PATCH 2/2] bump deps --- composer.json | 6 +++--- .../MethodCall/AssertTrueFalseToSpecificMethodRector.php | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index d8642057..502b23c2 100644 --- a/composer.json +++ b/composer.json @@ -8,9 +8,9 @@ }, "require-dev": { "rector/rector-src": "dev-main", - "phpunit/phpunit": "^11.4", - "phpstan/phpstan": "^2.0", - "symplify/easy-coding-standard": "^12.3", + "phpunit/phpunit": "^11.5", + "phpstan/phpstan": "^2.1", + "phpecs/phpecs": "^2.0", "phpstan/extension-installer": "^1.4", "symplify/vendor-patches": "^11.3", "tracy/tracy": "^2.10", diff --git a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php index e8fa5643..0b2d8604 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertTrueFalseToSpecificMethodRector.php @@ -182,7 +182,6 @@ private function moveFunctionArgumentsUp(MethodCall|StaticCall $node): void return; } - $funcCallOrEmptyNodeArgs = $funcCallOrEmptyNode->getArgs(); $oldArguments = $node->getArgs(); unset($oldArguments[0]); @@ -216,7 +215,7 @@ private function buildNewArguments( return [...$funcCallOrEmptyNodeArgs, ...$oldArguments]; } - if (in_array($funcCallOrEmptyNodeName, ['is_a', 'str_contains'])) { + if (in_array($funcCallOrEmptyNodeName, ['is_a', 'str_contains'], true)) { // flip arguments $newArgs = [$funcCallOrEmptyNodeArgs[1], $funcCallOrEmptyNodeArgs[0]];