You are here

protected function DrupalWebTestCase::copySetupCache in Drupal 7

Copy the setup cache from/to another table and files directory.

Parameters

string $from: The prefix_id / cache_key from where to copy.

string $to: The prefix_id / cache_key to where to copy.

Return value

bool TRUE if the setup cache was copied to the current installation, FALSE otherwise.

2 calls to DrupalWebTestCase::copySetupCache()
DrupalWebTestCase::loadSetupCache in modules/simpletest/drupal_web_test_case.php
Copies the cached tables and files for a cached installation setup.
DrupalWebTestCase::storeSetupCache in modules/simpletest/drupal_web_test_case.php
Store the installation setup to a cache.

File

modules/simpletest/drupal_web_test_case.php, line 1557

Class

DrupalWebTestCase
Test case for typical Drupal tests.

Code

protected function copySetupCache($from, $to) {
  $from_prefix = 'simpletest' . $from;
  $to_prefix = 'simpletest' . $to;
  try {
    $tables = db_query("SHOW TABLES LIKE :prefix", array(
      ':prefix' => db_like($from_prefix) . '%',
    ))
      ->fetchCol();
    if (count($tables) == 0) {
      return FALSE;
    }
    foreach ($tables as $from_table) {
      $table = substr($from_table, strlen($from_prefix));
      $to_table = $to_prefix . $table;

      // Remove the table in case the copying process was interrupted.
      db_query('DROP TABLE IF EXISTS ' . $to_table);
      db_query('CREATE TABLE ' . $to_table . ' LIKE ' . $from_table);
      db_query('ALTER TABLE ' . $to_table . ' DISABLE KEYS');
      db_query('INSERT ' . $to_table . ' SELECT * FROM ' . $from_table);
      db_query('ALTER TABLE ' . $to_table . ' ENABLE KEYS');
    }
  } catch (Exception $e) {
    return FALSE;
  }
  $from_dir = $this->originalFileDirectory . '/simpletest/' . $from;
  $to_dir = $this->originalFileDirectory . '/simpletest/' . $to;
  $this
    ->recursiveDirectoryCopy($from_dir, $to_dir);
  return TRUE;
}