1 backdrop_web_test_case.php protected BackdropUnitTestCase::setUp()

Sets up unit test environment.

Unlike BackdropWebTestCase::setUp(), BackdropUnitTestCase::setUp() does not install modules because tests are performed without accessing the database. Any required files must be explicitly included by the child class setUp() method.

Overrides BackdropTestCase::setUp

File

core/modules/simpletest/backdrop_web_test_case.php, line 838

Class

BackdropUnitTestCase
Test case for Backdrop unit tests.

Code

protected function setUp() {
  global $conf, $language;

  // Store necessary current values before switching to the test environment.
  $this->originalFileDirectory = config_get('system.core', 'file_public_path');
  $this->verboseDirectoryUrl = file_create_url($this->originalFileDirectory . '/simpletest/verbose');

  // Set to English to prevent any use of the database in t() calls.
  // The following array/object conversion is copied from language_default().
  $this->originalLanguage = $language;
  $language = (object) array(
    'langcode' => 'en',
    'name' => 'English',
    'direction' => 0,
    'enabled' => TRUE,
    'weight' => 0,
  );

  $this->prepareDatabasePrefix();

  // Reset all statics so that test is performed with a clean environment.
  backdrop_static_reset();

  // Create test directory.
  $public_files_directory = $this->originalFileDirectory . '/simpletest/' . $this->fileDirectoryName;
  file_prepare_directory($public_files_directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
  $conf['file_public_path'] = $public_files_directory;

  // 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']);

  // Set user agent to be consistent with web test case.
  $_SERVER['HTTP_USER_AGENT'] = $this->databasePrefix;

  // If locale is enabled then t() will try to access the database and
  // subsequently will fail as the database is not accessible.
  $module_list = module_list();
  if (isset($module_list['locale'])) {
    // Transform the list into the format expected as input to module_list().
    foreach ($module_list as &$module) {
      $module = array('filename' => backdrop_get_filename('module', $module));
    }
    $this->originalModuleList = $module_list;
    unset($module_list['locale']);
    module_list(TRUE, FALSE, FALSE, $module_list);
  }
  $this->setup = TRUE;
  return TRUE;
}