function KernelTestBaseDatabaseDriverModuleTest::getDatabaseConnectionInfo
Returns the Database connection info to be used for this test.
This method only exists for tests of the Database component itself, because they require multiple database connections. Each SQLite :memory: connection creates a new/separate database in memory. A shared-memory SQLite file URI triggers PHP open_basedir/allow_url_fopen/allow_url_include restrictions. Due to that, Database tests are running against a SQLite database that is located in an actual file in the system's temporary directory.
Other tests should not override this method.
@internal
Return value
array A Database connection info array.
Overrides KernelTestBase::getDatabaseConnectionInfo
File
-
core/
tests/ Drupal/ KernelTests/ KernelTestBaseDatabaseDriverModuleTest.php, line 19
Class
- KernelTestBaseDatabaseDriverModuleTest
- @coversDefaultClass \Drupal\KernelTests\KernelTestBase[[api-linebreak]]
Namespace
Drupal\KernelTestsCode
protected function getDatabaseConnectionInfo() {
// If the test is run with argument SIMPLETEST_DB then use it.
$db_url = getenv('SIMPLETEST_DB');
if (empty($db_url)) {
throw new \Exception('There is no database connection so no tests can be run. You must provide a SIMPLETEST_DB environment variable to run PHPUnit based functional tests outside of run-tests.sh. See https://www.drupal.org/node/2116263#skipped-tests for more information.');
}
else {
$database = Database::convertDbUrlToConnectionInfo($db_url, $this->root);
if (in_array($database['driver'], [
'mysql',
'pgsql',
])) {
// Change the used database driver to the one provided by the module
// "driver_test".
$driver = 'Drivertest' . ucfirst($database['driver']);
$database['driver'] = $driver;
$database['namespace'] = 'Drupal\\driver_test\\Driver\\Database\\' . $driver;
$database['autoload'] = "core/modules/system/tests/modules/driver_test/src/Driver/Database/{$driver}/";
}
Database::addConnectionInfo('default', 'default', $database);
}
// Clone the current connection and replace the current prefix.
$connection_info = Database::getConnectionInfo('default');
if (!empty($connection_info)) {
Database::renameConnection('default', 'simpletest_original_default');
foreach ($connection_info as $target => $value) {
// Replace the full table prefix definition to ensure that no table
// prefixes of the test runner leak into the test.
$connection_info[$target]['prefix'] = [
'default' => $this->databasePrefix,
];
}
}
return $connection_info;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.