diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php index 5f326bbf..9d72498d 100644 --- a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php @@ -4,7 +4,6 @@ use Drupal\Core\Database\ConnectionNotDefinedException; use Drupal\Core\Database\Install\Tasks as InstallTasks; -use Drupal\Core\Database\Database; use Drupal\Core\Database\Driver\mysql\Connection; use Drupal\Core\Database\DatabaseNotFoundException; @@ -61,7 +60,7 @@ public function __construct() { */ public function name() { try { - if (!Database::isActiveConnection() || !$this->getConnection() instanceof Connection) { + if (!$this->isConnectionActive() || !$this->getConnection() instanceof Connection) { throw new ConnectionNotDefinedException('The database connection is not active or not a MySql connection'); } if ($this->getConnection()->isMariaDb()) { diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php index 522ff790..3ca2ed37 100644 --- a/core/lib/Drupal/Core/Database/Install/Tasks.php +++ b/core/lib/Drupal/Core/Database/Install/Tasks.php @@ -311,6 +311,17 @@ protected function t($string, array $args = [], array $options = []) { return new TranslatableMarkup($string, $args, $options); } + /** + * Determines if there is an active connection. + * + * @return bool + * TRUE if there is at least one database connection established, FALSE + * otherwise. + */ + protected function isConnectionActive() { + return Database::isActiveConnection(); + } + /** * Returns the database connection. * diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php b/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php index 4dbf3a5e..e308b0a6 100644 --- a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php +++ b/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php @@ -30,9 +30,9 @@ public function setUp() { } /** - * Creates a Connection object for testing. + * Creates a Tasks object for testing. * - * @return \Drupal\Core\Database\Driver\mysql\Connection + * @return \Drupal\Core\Database\Driver\mysql\Install\Tasks */ private function createTasks(): Tasks { /** @var \Drupal\Core\Database\Driver\mysql\Connection $connection */ @@ -46,6 +46,10 @@ public function __construct(Connection $connection) { $this->connection = $connection; } + protected function isConnectionActive() { + return TRUE; + } + protected function getConnection() { return $this->connection; } @@ -57,6 +61,29 @@ protected function t($string, array $args = [], array $options = []) { }; } + /** + * Creates a Tasks object for testing, without connection. + * + * @return \Drupal\Core\Database\Driver\mysql\Install\Tasks + */ + private function createTasksNoConnection(): Tasks { + return new class() extends Tasks { + + protected function isConnectionActive() { + return FALSE; + } + + protected function getConnection() { + return NULL; + } + + protected function t($string, array $args = [], array $options = []) { + return $string; + } + + }; + } + /** * @covers ::minimumVersion * @covers ::name @@ -101,15 +128,8 @@ public function providerNameAndMinimumVersion(): array { * @covers ::name */ public function testNameWithNoConnection() { - $this->connection - ->isMariaDb() - ->shouldBeCalledOnce() - ->willThrow(ConnectionNotDefinedException::class); - $tasks = $this->createTasks(); - - $name = $tasks->name(); - - $this->assertSame('MySQL, MariaDB, Percona Server, or equivalent', $name); + $tasks = $this->createTasksNoConnection(); + $this->assertSame('MySQL, MariaDB, Percona Server, or equivalent', $tasks->name()); } }