protected function TestBase::changeDatabasePrefix

Changes the database connection to the prefixed one.

See also

WebTestBase::setUp()

3 calls to TestBase::changeDatabasePrefix()
UnitTestBase::setUp in drupal/core/modules/simpletest/lib/Drupal/simpletest/UnitTestBase.php
Sets up unit test environment.
UpgradePathTestBase::setUp in drupal/core/modules/system/lib/Drupal/system/Tests/Upgrade/UpgradePathTestBase.php
Overrides Drupal\simpletest\WebTestBase::setUp() for upgrade testing.
WebTestBase::setUp in drupal/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
Sets up a Drupal site for running functional and integration tests.

File

drupal/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php, line 760
Definition of Drupal\simpletest\TestBase.

Class

TestBase
Base class for Drupal tests.

Namespace

Drupal\simpletest

Code

protected function changeDatabasePrefix() {
  if (empty($this->databasePrefix)) {
    $this
      ->prepareDatabasePrefix();

    // If $this->prepareDatabasePrefix() failed to work, return without
    // setting $this->setupDatabasePrefix to TRUE, so setUp() methods will
    // know to bail out.
    if (empty($this->databasePrefix)) {
      return;
    }
  }

  // Clone the current connection and replace the current prefix.
  $connection_info = Database::getConnectionInfo('default');
  Database::renameConnection('default', 'simpletest_original_default');
  foreach ($connection_info as $target => $value) {
    $connection_info[$target]['prefix'] = array(
      'default' => $value['prefix']['default'] . $this->databasePrefix,
    );
  }
  Database::addConnectionInfo('default', 'default', $connection_info['default']);

  // Additionally override global $databases, since the installer does not use
  // the Database connection info.
  // @see install_verify_database_settings()
  // @see install_database_errors()
  // @todo Fix installer to use Database connection info.
  global $databases;
  $databases['default']['default'] = $connection_info['default'];

  // Indicate the database prefix was set up correctly.
  $this->setupDatabasePrefix = TRUE;
}