Skip to content

Commit 11c1781

Browse files
authored
Merge pull request #595 from kenjis/update-UserModelGenerator-for-CI4.3.0
Update UserModelGenerator for CI 4.3.0
2 parents 20a9fb0 + e097f6c commit 11c1781

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

phpstan.neon.dist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ parameters:
2323
- APP_NAMESPACE
2424
- CI_DEBUG
2525
- ENVIRONMENT
26+
- CodeIgniter\CodeIgniter::CI_VERSION

rector.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
use Rector\Config\RectorConfig;
2424
use Rector\Core\ValueObject\PhpVersion;
2525
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPromotedPropertyRector;
26+
use Rector\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector;
2627
use Rector\DeadCode\Rector\MethodCall\RemoveEmptyMethodCallRector;
28+
use Rector\DeadCode\Rector\Property\RemoveUnusedPrivatePropertyRector;
2729
use Rector\DeadCode\Rector\StmtsAwareInterface\RemoveJustPropertyFetchForAssignRector;
2830
use Rector\EarlyReturn\Rector\Foreach_\ChangeNestedForeachIfsToEarlyContinueRector;
2931
use Rector\EarlyReturn\Rector\If_\ChangeIfElseValueAssignToEarlyReturnRector;
@@ -108,6 +110,14 @@
108110
RemoveJustPropertyFetchForAssignRector::class => [
109111
__DIR__ . '/src/Models/UserModel.php',
110112
],
113+
114+
// Ignore tests that use CodeIgniter::CI_VERSION
115+
UnwrapFutureCompatibleIfPhpVersionRector::class => [
116+
__DIR__ . '/tests/Commands/UserModelGeneratorTest.php',
117+
],
118+
RemoveUnusedPrivatePropertyRector::class => [
119+
__DIR__ . '/tests/Commands/UserModelGeneratorTest.php',
120+
],
111121
]);
112122
// auto import fully qualified class names
113123
$rectorConfig->importNames();

src/Commands/Generators/UserModelGenerator.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class UserModelGenerator extends BaseCommand
5454
/**
5555
* Actually execute the command.
5656
*/
57-
public function run(array $params): void
57+
public function run(array $params): int
5858
{
5959
$this->component = 'Model';
6060
$this->directory = 'Models';
@@ -68,12 +68,15 @@ public function run(array $params): void
6868
if (! $this->verifyChosenModelClassName($class, $params)) {
6969
CLI::error('Cannot use `ShieldUserModel` as class name as this conflicts with the parent class.', 'light_gray', 'red');
7070

71-
return; // @TODO when CI4 is at v4.3+, change this to `return 1;` to signify failing exit
71+
return 1;
7272
}
7373

7474
$params[0] = $class;
7575

76-
$this->execute($params);
76+
// @TODO execute() is deprecated in CI v4.3.0.
77+
$this->execute($params); // @phpstan-ignore-line suppress deprecated error.
78+
79+
return 0;
7780
}
7881

7982
/**

tests/Commands/UserModelGeneratorTest.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Tests\Commands;
66

7+
use CodeIgniter\CodeIgniter;
78
use CodeIgniter\Test\CIUnitTestCase;
89
use CodeIgniter\Test\Filters\CITestStreamFilter;
910

@@ -18,10 +19,16 @@ protected function setUp(): void
1819
{
1920
parent::setUp();
2021

21-
CITestStreamFilter::$buffer = '';
22+
if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) {
23+
CITestStreamFilter::registration();
24+
CITestStreamFilter::addOutputFilter();
25+
CITestStreamFilter::addErrorFilter();
26+
} else {
27+
CITestStreamFilter::$buffer = '';
2228

23-
$this->streamFilter = stream_filter_append(STDOUT, 'CITestStreamFilter');
24-
$this->streamFilter = stream_filter_append(STDERR, 'CITestStreamFilter');
29+
$this->streamFilter = stream_filter_append(STDOUT, 'CITestStreamFilter');
30+
$this->streamFilter = stream_filter_append(STDERR, 'CITestStreamFilter');
31+
}
2532

2633
if (is_file(HOMEPATH . 'src/Models/UserModel.php')) {
2734
copy(HOMEPATH . 'src/Models/UserModel.php', HOMEPATH . 'src/Models/UserModel.php.bak');
@@ -34,7 +41,13 @@ protected function tearDown(): void
3441
{
3542
parent::tearDown();
3643

37-
stream_filter_remove($this->streamFilter);
44+
if (version_compare(CodeIgniter::CI_VERSION, '4.3.0', '>=')) {
45+
CITestStreamFilter::removeOutputFilter();
46+
CITestStreamFilter::removeErrorFilter();
47+
} else {
48+
stream_filter_remove($this->streamFilter);
49+
}
50+
3851
$this->deleteTestFiles();
3952

4053
if (is_file(HOMEPATH . 'src/Models/UserModel.php.bak')) {

0 commit comments

Comments
 (0)