Skip to content

Commit 130be04

Browse files
authored
Merge pull request #8036 from paulbalandan/update-phpstan-codeigniter
Update phpstan-codeigniter and fix errors on Modules
2 parents b56c85c + 61bbbca commit 130be04

File tree

7 files changed

+34
-42
lines changed

7 files changed

+34
-42
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
},
2020
"require-dev": {
2121
"codeigniter/coding-standard": "^1.5",
22-
"codeigniter/phpstan-codeigniter": "^v1.1",
22+
"codeigniter/phpstan-codeigniter": "^1.4",
2323
"ergebnis/composer-normalize": "^2.28",
2424
"fakerphp/faker": "^1.9",
2525
"kint-php/kint": "^5.0.4",

phpstan-baseline.php

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -871,16 +871,6 @@
871871
'count' => 4,
872872
'path' => __DIR__ . '/system/Config/BaseConfig.php',
873873
];
874-
$ignoreErrors[] = [
875-
'message' => '#^Argument \\#1 \\$name \\(\'Config\\\\\\\\Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#',
876-
'count' => 1,
877-
'path' => __DIR__ . '/system/Config/BaseConfig.php',
878-
];
879-
$ignoreErrors[] = [
880-
'message' => '#^Argument \\#1 \\$name \\(\'Config\\\\\\\\Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#',
881-
'count' => 2,
882-
'path' => __DIR__ . '/system/Config/BaseService.php',
883-
];
884874
$ignoreErrors[] = [
885875
'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#',
886876
'count' => 3,

phpstan.neon.dist

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,3 @@ parameters:
3838
booleansInConditions: true
3939
disallowedConstructs: true
4040
matchingInheritedMethodNames: true
41-
codeigniter:
42-
additionalConfigNamespaces:
43-
- CodeIgniter\Config\

system/Config/BaseConfig.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class BaseConfig
5555
/**
5656
* The modules configuration.
5757
*
58-
* @var Modules
58+
* @var Modules|null
5959
*/
6060
protected static $moduleConfig;
6161

@@ -74,6 +74,15 @@ public static function __set_state(array $array)
7474
return $obj;
7575
}
7676

77+
/**
78+
* @internal For testing purposes only.
79+
* @testTag
80+
*/
81+
public static function setModules(Modules $modules): void
82+
{
83+
static::$moduleConfig = $modules;
84+
}
85+
7786
/**
7887
* Will attempt to get environment variables with names
7988
* that match the properties of the child class.
@@ -82,7 +91,7 @@ public static function __set_state(array $array)
8291
*/
8392
public function __construct()
8493
{
85-
static::$moduleConfig = config(Modules::class);
94+
static::$moduleConfig ??= new Modules();
8695

8796
if (! static::$override) {
8897
return;

system/Config/BaseService.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,7 @@ public static function injectMock(string $name, $mock)
330330
protected static function discoverServices(string $name, array $arguments)
331331
{
332332
if (! static::$discovered) {
333-
$config = config(Modules::class);
334-
335-
if ($config->shouldDiscover('services')) {
333+
if ((new Modules())->shouldDiscover('services')) {
336334
$locator = static::locator();
337335
$files = $locator->search('Config/Services');
338336

@@ -372,9 +370,7 @@ protected static function discoverServices(string $name, array $arguments)
372370
protected static function buildServicesCache(): void
373371
{
374372
if (! static::$discovered) {
375-
$config = config(Modules::class);
376-
377-
if ($config->shouldDiscover('services')) {
373+
if ((new Modules())->shouldDiscover('services')) {
378374
$locator = static::locator();
379375
$files = $locator->search('Config/Services');
380376

tests/system/Cache/FactoriesCacheFileVarExportHandlerTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use CodeIgniter\Config\Factories;
1616
use CodeIgniter\Test\CIUnitTestCase;
1717
use Config\App;
18-
use Config\Modules;
1918

2019
/**
2120
* @internal
@@ -58,7 +57,6 @@ public function testSave()
5857

5958
$this->assertArrayHasKey('aliases', $cachedData);
6059
$this->assertArrayHasKey('instances', $cachedData);
61-
$this->assertArrayHasKey(Modules::class, $cachedData['aliases']);
6260
$this->assertArrayHasKey('App', $cachedData['aliases']);
6361
}
6462

tests/system/Config/BaseConfigTest.php

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111

1212
namespace CodeIgniter\Config;
1313

14+
use CodeIgniter\Autoloader\FileLocator;
1415
use CodeIgniter\Test\CIUnitTestCase;
16+
use Config\Modules;
1517
use Encryption;
18+
use PHPUnit\Framework\MockObject\MockObject;
1619
use RegistrarConfig;
1720
use RuntimeException;
1821
use SimpleConfig;
@@ -45,6 +48,9 @@ protected function setUp(): void
4548
if (! class_exists('Encryption', false)) {
4649
require $this->fixturesFolder . '/Encryption.php';
4750
}
51+
52+
BaseConfig::$registrars = [];
53+
BaseConfig::setModules(new Modules()); // reset to clean copy of Modules
4854
}
4955

5056
public function testBasicValues(): void
@@ -265,32 +271,28 @@ public function testBadRegistrar(): void
265271
$this->assertSame('bar', $config->foo);
266272
}
267273

268-
public function testNotEnabled(): void
274+
public function testDiscoveryNotEnabledWillNotPopulateRegistrarsArray(): void
269275
{
270-
$modulesConfig = config('Modules');
271-
$modulesConfig->enabled = false;
272-
273-
$config = new RegistrarConfig();
274-
$config::$registrars = [];
275-
$expected = $config::$registrars;
276+
/** @var MockObject&Modules $modules */
277+
$modules = $this->createMock(Modules::class);
278+
$modules->method('shouldDiscover')->with('registrars')->willReturn(false);
276279

277-
$method = $this->getPrivateMethodInvoker($config, 'registerProperties');
278-
$method();
280+
RegistrarConfig::setModules($modules);
281+
$config = new RegistrarConfig();
279282

280-
$this->assertSame($expected, $config::$registrars);
283+
$this->assertSame([], $config::$registrars);
281284
}
282285

283-
public function testDidDiscovery(): void
286+
public function testRedoingDiscoveryWillStillSetDidDiscoveryPropertyToTrue(): void
284287
{
285-
$modulesConfig = config('Modules');
286-
$modulesConfig->enabled = true;
288+
/** @var FileLocator&MockObject $locator */
289+
$locator = $this->createMock(FileLocator::class);
290+
$locator->method('search')->with('Config/Registrar.php')->willReturn([]);
291+
Services::injectMock('locator', $locator);
287292

288-
$config = new RegistrarConfig();
289-
$config::$registrars = [];
290-
$this->setPrivateProperty($config, 'didDiscovery', false);
293+
$this->setPrivateProperty(RegistrarConfig::class, 'didDiscovery', false);
291294

292-
$method = $this->getPrivateMethodInvoker($config, 'registerProperties');
293-
$method();
295+
$config = new RegistrarConfig();
294296

295297
$this->assertTrue($this->getPrivateProperty($config, 'didDiscovery'));
296298
}

0 commit comments

Comments
 (0)