Exemplo n.º 1
0
 /**
  * Assert there are tables that begin with the specified base table name.
  *
  * @param $base_table
  *   Beginning of table name to look for.
  * @param $count
  *   (optional) Whether or not to assert that there are tables that match the
  *   specified base table. Defaults to TRUE.
  */
 function assertTableCount($base_table, $count = TRUE)
 {
     $tables = db_find_tables(Database::getConnection()->prefixTables('{' . $base_table . '}') . '%');
     if ($count) {
         return $this->assertTrue($tables, format_string('Tables matching "@base_table" found.', array('@base_table' => $base_table)));
     }
     return $this->assertFalse($tables, format_string('Tables matching "@base_table" not found.', array('@base_table' => $base_table)));
 }
 /**
  * Delete created files and temporary files directory, delete the tables created by setUp(),
  * and reset the database prefix.
  */
 protected function tearDown()
 {
     global $user, $language, $settings, $config_directories;
     // In case a fatal error occurred that was not in the test process read the
     // log to pick up any fatal errors.
     simpletest_log_read($this->testId, $this->databasePrefix, get_class($this), TRUE);
     $emailCount = count(state_get('test_email_collector', array()));
     if ($emailCount) {
         $message = format_plural($emailCount, '1 e-mail was sent during this test.', '@count e-mails were sent during this test.');
         $this->pass($message, t('E-mail'));
     }
     // Delete temporary files directory.
     file_unmanaged_delete_recursive($this->originalFileDirectory . '/simpletest/' . substr($this->databasePrefix, 10));
     // Remove all prefixed tables.
     $connection_info = Database::getConnectionInfo('default');
     $tables = db_find_tables($connection_info['default']['prefix']['default'] . '%');
     if (empty($tables)) {
         $this->fail('Failed to find test tables to drop.');
     }
     $prefix_length = strlen($connection_info['default']['prefix']['default']);
     foreach ($tables as $table) {
         if (db_drop_table(substr($table, $prefix_length))) {
             unset($tables[$table]);
         }
     }
     if (!empty($tables)) {
         $this->fail('Failed to drop all prefixed tables.');
     }
     // Get back to the original connection.
     Database::removeConnection('default');
     Database::renameConnection('simpletest_original_default', 'default');
     // Delete the database table prefix record.
     db_delete('simpletest_prefix')->condition('test_id', $this->testId)->condition('prefix', $this->databasePrefix)->execute();
     // Set the configuration direcotires back to the originals.
     $config_directories = $this->originalConfigDirectories;
     // Restore the original settings.
     $settings = $this->originalSettings;
     // Restore original shutdown callbacks array to prevent original
     // environment of calling handlers from test run.
     $callbacks =& backdrop_register_shutdown_function();
     $callbacks = $this->originalShutdownCallbacks;
     // Return the user to the original one.
     $user = $this->originalUser;
     backdrop_save_session(TRUE);
     // Ensure that internal logged in variable and cURL options are reset.
     $this->loggedInUser = FALSE;
     $this->additionalCurlOptions = array();
     // Reload module list and implementations to ensure that test module hooks
     // aren't called after tests.
     module_list(TRUE);
     module_implements_reset();
     // Reset the Field API.
     field_cache_clear();
     // Rebuild caches.
     $this->refreshVariables();
     // Reset public files directory.
     $GLOBALS['conf']['file_public_path'] = $this->originalFileDirectory;
     // Reset language.
     $language = $this->originalLanguage;
     if ($this->originalLanguageDefault) {
         $GLOBALS['conf']['language_default'] = $this->originalLanguageDefault;
     }
     // Close the CURL handler.
     $this->curlClose();
 }
 /**
  * Alter tables to MyISAM engine to speed up tests.
  *
  * MyISAM is faster to delete and copy tables. It gives small adventage when /var/lib/mysql on SHM (memory) device, but much bigger when tests run on regular device.
  */
 protected function alterToMyISAM()
 {
     $skip_alter = array('taxonomy_term_data', 'node', 'node_access', 'node_revision', 'node_comment_statistics');
     $tables = db_find_tables($this->databasePrefix . '%');
     foreach ($tables as $table) {
         $original_table_name = substr($table, strlen($this->databasePrefix));
         if (!in_array($original_table_name, $skip_alter)) {
             db_query('ALTER TABLE ' . $table . ' ENGINE=MyISAM');
         }
     }
 }