From 5e75bfbf7a13fa8d39c2322a2dd1d85a262dadf4 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 25 Jan 2023 22:11:55 +0100 Subject: [PATCH 1/6] Register handler for Models only (bypass an issue in ide-helper) --- src/Fakes/FakeModelsCommand.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Fakes/FakeModelsCommand.php b/src/Fakes/FakeModelsCommand.php index ce4c5181..f8584876 100644 --- a/src/Fakes/FakeModelsCommand.php +++ b/src/Fakes/FakeModelsCommand.php @@ -11,6 +11,7 @@ use function config; use function get_class; use function in_array; +use function is_a; use function implode; use function method_exists; use function sprintf; @@ -33,7 +34,20 @@ public function __construct(Filesystem $files, SchemaAggregator $schema) /** @return list> */ public function getModels(): array { - return $this->model_classes + $this->loadModels(); + if ($this->dirs === []) { + throw new \LogicException('Directories to scan models are not set.'); + } + + $models = []; + + // Bypass an issue https://github.com/barryvdh/laravel-ide-helper/issues/1414 + foreach ($this->loadModels() as $probably_model_fqcn) { + if (is_a($probably_model_fqcn, Model::class, true)) { + $models[] = $probably_model_fqcn; + } + } + + return $this->model_classes + $models; } /** From a170cb7ed015e48fa9f45074fce863754da97848 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 25 Jan 2023 21:12:38 +0000 Subject: [PATCH 2/6] =?UTF-8?q?Fix=20PHP=20coding=20style=20issues=20?= =?UTF-8?q?=F0=9F=AA=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php b/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php index 83068643..87953675 100644 --- a/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php +++ b/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php @@ -10,7 +10,7 @@ final class DefaultUserTableTest extends AbstractSchemaAggregatorTest /** @test */ public function it_detects_all_columns(): void { - $schemaAggregator = $this->instantiateSchemaAggregator(__DIR__.'/migrations/simple'); + $schemaAggregator = $this->instantiateSchemaAggregator(__DIR__ . '/migrations/simple'); $this->assertSchemaHasTableAndNotNullableColumnOfType('users.id', 'int', $schemaAggregator); $this->assertSchemaHasTableAndNotNullableColumnOfType('users.email', 'string', $schemaAggregator); From 9e1a8bdd4ea12a2d1d51ad9cd76c8ee2c4679ec7 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Thu, 26 Jan 2023 22:26:19 +0100 Subject: [PATCH 3/6] Remove a wrong parent method check it silently fails --- src/Fakes/FakeModelsCommand.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Fakes/FakeModelsCommand.php b/src/Fakes/FakeModelsCommand.php index 5ac66c1a..51cbabb6 100644 --- a/src/Fakes/FakeModelsCommand.php +++ b/src/Fakes/FakeModelsCommand.php @@ -14,8 +14,6 @@ use function in_array; use function is_a; use function implode; -use function method_exists; -use function sprintf; /** @psalm-suppress PropertyNotSetInConstructor */ class FakeModelsCommand extends ModelsCommand @@ -60,15 +58,6 @@ public function getModels(): array */ public function getPropertiesFromTable($model): void { - $is_parent_method_still_exist = method_exists(ModelsCommand::class, __METHOD__); - if (! $is_parent_method_still_exist) { - throw new \BadMethodCallException(sprintf( - 'Method %s::%s() does not exist anymore. Please rename overridden method accordingly.', - ModelsCommand::class, - __METHOD__ - )); - } - $table_name = $model->getTable(); if (!isset($this->schema->tables[$table_name])) { From 621e0c4d17bc9e985cdaad05fc84f748196e3aed Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Thu, 26 Jan 2023 22:49:13 +0100 Subject: [PATCH 4/6] Exclude testing PHP code from coding style lint --- phpcs.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/phpcs.xml b/phpcs.xml index ef0e9943..c506fbe4 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -30,4 +30,5 @@ tests/_run tests/_support tests/Support/ + tests/Unit/Handlers/Eloquent/Schema/migrations From c94b0c1bff76f80ba2679d23f18d7a792e2863fb Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Thu, 26 Jan 2023 22:51:56 +0100 Subject: [PATCH 5/6] Add missing import --- tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php b/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php index db8ad57c..9d23671e 100644 --- a/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php +++ b/tests/Unit/Handlers/Eloquent/Schema/DefaultUserTableTest.php @@ -4,6 +4,8 @@ namespace Tests\Psalm\LaravelPlugin\Unit\Handlers\Eloquent\Schema; +use Psalm\LaravelPlugin\Handlers\Eloquent\Schema\SchemaAggregator; + /** @covers \Psalm\LaravelPlugin\Handlers\Eloquent\Schema\SchemaAggregator */ final class DefaultUserTableTest extends AbstractSchemaAggregatorTest { From 579d83ac0951a0dd3509eddee1e4ed143d0c44b3 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Thu, 26 Jan 2023 22:56:24 +0100 Subject: [PATCH 6/6] Use more generic-safe operations --- src/Fakes/FakeModelsCommand.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Fakes/FakeModelsCommand.php b/src/Fakes/FakeModelsCommand.php index 51cbabb6..14a1c7bc 100644 --- a/src/Fakes/FakeModelsCommand.php +++ b/src/Fakes/FakeModelsCommand.php @@ -11,8 +11,9 @@ use function config; use function get_class; -use function in_array; use function is_a; +use function in_array; +use function is_string; use function implode; /** @psalm-suppress PropertyNotSetInConstructor */ @@ -41,12 +42,12 @@ public function getModels(): array // Bypass an issue https://github.com/barryvdh/laravel-ide-helper/issues/1414 foreach ($this->loadModels() as $probably_model_fqcn) { - if (is_a($probably_model_fqcn, Model::class, true)) { + if (is_string($probably_model_fqcn) && is_a($probably_model_fqcn, Model::class, true)) { $models[] = $probably_model_fqcn; } } - return $this->model_classes + $models; + return [...$this->model_classes, ...$models]; } /**