From b89721519ab6ceb202f28fbbf81ab9aacb627275 Mon Sep 17 00:00:00 2001 From: kenjis Date: Wed, 11 Jan 2023 13:12:39 +0900 Subject: [PATCH 1/5] test: update tests with CITestStreamFilter for CI 4.3.0 --- tests/Commands/UserModelGeneratorTest.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tests/Commands/UserModelGeneratorTest.php b/tests/Commands/UserModelGeneratorTest.php index cf009e373..d46f20924 100644 --- a/tests/Commands/UserModelGeneratorTest.php +++ b/tests/Commands/UserModelGeneratorTest.php @@ -4,6 +4,7 @@ namespace Tests\Commands; +use CodeIgniter\CodeIgniter; use CodeIgniter\Test\CIUnitTestCase; use CodeIgniter\Test\Filters\CITestStreamFilter; @@ -18,10 +19,17 @@ protected function setUp(): void { parent::setUp(); - CITestStreamFilter::$buffer = ''; + // @phpstan-ignore-next-line + if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) { + CITestStreamFilter::registration(); + CITestStreamFilter::addOutputFilter(); + CITestStreamFilter::addErrorFilter(); + } else { + CITestStreamFilter::$buffer = ''; - $this->streamFilter = stream_filter_append(STDOUT, 'CITestStreamFilter'); - $this->streamFilter = stream_filter_append(STDERR, 'CITestStreamFilter'); + $this->streamFilter = stream_filter_append(STDOUT, 'CITestStreamFilter'); + $this->streamFilter = stream_filter_append(STDERR, 'CITestStreamFilter'); + } if (is_file(HOMEPATH . 'src/Models/UserModel.php')) { copy(HOMEPATH . 'src/Models/UserModel.php', HOMEPATH . 'src/Models/UserModel.php.bak'); @@ -34,7 +42,14 @@ protected function tearDown(): void { parent::tearDown(); - stream_filter_remove($this->streamFilter); + // @phpstan-ignore-next-line + if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) { + CITestStreamFilter::removeOutputFilter(); + CITestStreamFilter::removeErrorFilter(); + } else { + stream_filter_remove($this->streamFilter); + } + $this->deleteTestFiles(); if (is_file(HOMEPATH . 'src/Models/UserModel.php.bak')) { From 8d63969e8da9e64c61a6f02cad1301bc7e378cc2 Mon Sep 17 00:00:00 2001 From: kenjis Date: Wed, 11 Jan 2023 13:18:02 +0900 Subject: [PATCH 2/5] refactor: update for CI 4.3.0 --- src/Commands/Generators/UserModelGenerator.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Commands/Generators/UserModelGenerator.php b/src/Commands/Generators/UserModelGenerator.php index fdb76596c..3a9b63590 100644 --- a/src/Commands/Generators/UserModelGenerator.php +++ b/src/Commands/Generators/UserModelGenerator.php @@ -54,7 +54,7 @@ class UserModelGenerator extends BaseCommand /** * Actually execute the command. */ - public function run(array $params): void + public function run(array $params): int { $this->component = 'Model'; $this->directory = 'Models'; @@ -68,12 +68,14 @@ public function run(array $params): void if (! $this->verifyChosenModelClassName($class, $params)) { CLI::error('Cannot use `ShieldUserModel` as class name as this conflicts with the parent class.', 'light_gray', 'red'); - return; // @TODO when CI4 is at v4.3+, change this to `return 1;` to signify failing exit + return 1; } $params[0] = $class; - $this->execute($params); + $this->generateClass($params); + + return 0; } /** From dce2a123d3691f38fa916555ec11218793063e0d Mon Sep 17 00:00:00 2001 From: kenjis Date: Wed, 11 Jan 2023 13:48:55 +0900 Subject: [PATCH 3/5] chore: add skip for UserModelGeneratorTest.php --- rector.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rector.php b/rector.php index 4906a8213..1b797a7d0 100644 --- a/rector.php +++ b/rector.php @@ -23,7 +23,9 @@ use Rector\Config\RectorConfig; use Rector\Core\ValueObject\PhpVersion; use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPromotedPropertyRector; +use Rector\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector; use Rector\DeadCode\Rector\MethodCall\RemoveEmptyMethodCallRector; +use Rector\DeadCode\Rector\Property\RemoveUnusedPrivatePropertyRector; use Rector\DeadCode\Rector\StmtsAwareInterface\RemoveJustPropertyFetchForAssignRector; use Rector\EarlyReturn\Rector\Foreach_\ChangeNestedForeachIfsToEarlyContinueRector; use Rector\EarlyReturn\Rector\If_\ChangeIfElseValueAssignToEarlyReturnRector; @@ -108,6 +110,14 @@ RemoveJustPropertyFetchForAssignRector::class => [ __DIR__ . '/src/Models/UserModel.php', ], + + // Ignore tests that use CodeIgniter::CI_VERSION + UnwrapFutureCompatibleIfPhpVersionRector::class => [ + __DIR__ . '/tests/Commands/UserModelGeneratorTest.php', + ], + RemoveUnusedPrivatePropertyRector::class => [ + __DIR__ . '/tests/Commands/UserModelGeneratorTest.php', + ], ]); // auto import fully qualified class names $rectorConfig->importNames(); From 4fd2f533b4173998eaf43f9c1c5a2fae25493ffb Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 12 Jan 2023 14:57:59 +0900 Subject: [PATCH 4/5] fix: use execute() to support CI 4.2.x --- src/Commands/Generators/UserModelGenerator.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Commands/Generators/UserModelGenerator.php b/src/Commands/Generators/UserModelGenerator.php index 3a9b63590..2e9680aa7 100644 --- a/src/Commands/Generators/UserModelGenerator.php +++ b/src/Commands/Generators/UserModelGenerator.php @@ -73,7 +73,8 @@ public function run(array $params): int $params[0] = $class; - $this->generateClass($params); + // @TODO execute() is deprecated in CI v4.3.0. + $this->execute($params); // @phpstan-ignore-line suppress deprecated error. return 0; } From e097f6c7d93fcdf763d82a4e83177c41b462317c Mon Sep 17 00:00:00 2001 From: kenjis Date: Thu, 12 Jan 2023 16:56:54 +0900 Subject: [PATCH 5/5] chore: use PHPStan dynamicConstantNames --- phpstan.neon.dist | 1 + tests/Commands/UserModelGeneratorTest.php | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 63f562a13..5a406f846 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -23,3 +23,4 @@ parameters: - APP_NAMESPACE - CI_DEBUG - ENVIRONMENT + - CodeIgniter\CodeIgniter::CI_VERSION diff --git a/tests/Commands/UserModelGeneratorTest.php b/tests/Commands/UserModelGeneratorTest.php index d46f20924..d7fbfd522 100644 --- a/tests/Commands/UserModelGeneratorTest.php +++ b/tests/Commands/UserModelGeneratorTest.php @@ -19,7 +19,6 @@ protected function setUp(): void { parent::setUp(); - // @phpstan-ignore-next-line if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) { CITestStreamFilter::registration(); CITestStreamFilter::addOutputFilter(); @@ -42,7 +41,6 @@ protected function tearDown(): void { parent::tearDown(); - // @phpstan-ignore-next-line if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) { CITestStreamFilter::removeOutputFilter(); CITestStreamFilter::removeErrorFilter();