diff --git a/src/Services/DatabaseChecker.php b/src/Services/DatabaseChecker.php index 6660f3b..dd71404 100644 --- a/src/Services/DatabaseChecker.php +++ b/src/Services/DatabaseChecker.php @@ -157,6 +157,7 @@ private function resolveConfigFromUrl(string $url): array 'password' => $details['pass'] ?? '', 'database' => substr($details['path'] ?? '', $additionalPathChars), 'host' => $details['host'] ?? '', + 'port' => $details['port'] ?? '', ]; if (empty($result['database']) && !empty($result['host']) && $result['driver'] === 'sqlite') { diff --git a/tests/Unit/Services/DatabaseCheckerTest.php b/tests/Unit/Services/DatabaseCheckerTest.php index ce2aa0a..9e1e961 100644 --- a/tests/Unit/Services/DatabaseCheckerTest.php +++ b/tests/Unit/Services/DatabaseCheckerTest.php @@ -105,6 +105,19 @@ public function getTestCheckStatusCases(): array 'expectedResult' => DatabaseChecker::STATUS_OK, ]; + $cases['custom_mysql_url_port'] = [ + 'arguments' => [ + 'database.mysql_custom', + 'mysql://user3:pass3@127.0.0.3:5306/testdb3', + ], + 'expectedPdoArgs' => [ + 'mysql:host=127.0.0.3;port=5306;dbname=testdb3', + 'user3', + 'pass3', + ], + 'expectedResult' => DatabaseChecker::STATUS_OK, + ]; + $cases['doctrine_mysql_parameters'] = [ 'arguments' => [ 'database.mysql_doctrine', @@ -266,7 +279,7 @@ public function getTestCheckStatusCases(): array ], 'expectedResult' => DatabaseChecker::STATUS_OK, 'env' => [ - 'DATABASE_URL=mysql://user1:pass1@localhost/test_sf_db', + 'DATABASE_URL=mysql://user1:pass1@localhost:3306/test_sf_db', ], ];