Skip navigation
Help

DrupalWebTestCase::tearDown

7 drupal_web_test_case.php protected DrupalWebTestCase::tearDown()

Delete created files and temporary files directory, delete the tables created by setUp(), and reset the database prefix.

7 calls to DrupalWebTestCase::tearDown()

File

drupal/modules/simpletest/drupal_web_test_case.php, line 1446

Code

protected function tearDown() {
  global $user, $language;

  // In case a fatal error occured 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(variable_get('drupal_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 (all the tables in the schema).
  $schema = drupal_get_schema(NULL, TRUE);
  foreach ($schema as $name => $table) {
    db_drop_table($name);
  }

  // Get back to the original connection.
  Database::removeConnection('default');
  Database::renameConnection('simpletest_original_default', 'default');

  // Restore original shutdown callbacks array to prevent original
  // environment of calling handlers from test run.
  $callbacks = &drupal_register_shutdown_function();
  $callbacks = $this->originalShutdownCallbacks;

  // Return the user to the original one.
  $user = $this->originalUser;
  drupal_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('', FALSE, TRUE);

  // Reset the Field API.
  field_cache_clear();

  // Rebuild caches.
  $this->refreshVariables();

  // Reset language.
  $language = $this->originalLanguage;
  if ($this->originalLanguageDefault) {
    $GLOBALS['conf']['language_default'] = $this->originalLanguageDefault;
  }

  // Close the CURL handler.
  $this->curlClose();
}