You are here

protected function FunctionalTestSetupTrait::prepareEnvironment in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php \Drupal\Core\Test\FunctionalTestSetupTrait::prepareEnvironment()
  2. 9 core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php \Drupal\Core\Test\FunctionalTestSetupTrait::prepareEnvironment()

Prepares the current environment for running the test.

Also sets up new resources for the testing environment, such as the public filesystem and configuration directories.

24 calls to FunctionalTestSetupTrait::prepareEnvironment()
BrowserTestBase::setUp in core/tests/Drupal/Tests/BrowserTestBase.php
DistributionProfileExistingSettingsTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileExistingSettingsTest.php
Prepares the current environment for running the test.
DistributionProfileTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTest.php
Prepares the current environment for running the test.
DistributionProfileTranslationQueryTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationQueryTest.php
Prepares the current environment for running the test.
DistributionProfileTranslationTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php
Prepares the current environment for running the test.

... See full list

21 methods override FunctionalTestSetupTrait::prepareEnvironment()
DistributionProfileExistingSettingsTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileExistingSettingsTest.php
Prepares the current environment for running the test.
DistributionProfileTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTest.php
Prepares the current environment for running the test.
DistributionProfileTranslationQueryTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationQueryTest.php
Prepares the current environment for running the test.
DistributionProfileTranslationTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php
Prepares the current environment for running the test.
DrupalFlushAllCachesInInstallerTest::prepareEnvironment in core/tests/Drupal/FunctionalTests/Installer/DrupalFlushAllCachesInInstallerTest.php
Prepares the current environment for running the test.

... See full list

File

core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php, line 626

Class

FunctionalTestSetupTrait
Defines a trait for shared functional test setup functionality.

Namespace

Drupal\Core\Test

Code

protected function prepareEnvironment() {

  // Bootstrap Drupal so we can use Drupal's built in functions.
  $this->classLoader = (require __DIR__ . '/../../../../../autoload.php');
  $request = Request::createFromGlobals();
  $kernel = TestRunnerKernel::createFromRequest($request, $this->classLoader);

  // TestRunnerKernel expects the working directory to be DRUPAL_ROOT.
  chdir(DRUPAL_ROOT);
  $kernel
    ->boot();
  $kernel
    ->preHandle($request);
  $this
    ->prepareDatabasePrefix();
  $this->originalSite = $kernel
    ->findSitePath($request);

  // Create test directory ahead of installation so fatal errors and debug
  // information can be logged during installation process.
  \Drupal::service('file_system')
    ->prepareDirectory($this->siteDirectory, FileSystemInterface::CREATE_DIRECTORY | FileSystemInterface::MODIFY_PERMISSIONS);

  // Prepare filesystem directory paths.
  $this->publicFilesDirectory = $this->siteDirectory . '/files';
  $this->privateFilesDirectory = $this->siteDirectory . '/private';
  $this->tempFilesDirectory = $this->siteDirectory . '/temp';
  $this->translationFilesDirectory = $this->siteDirectory . '/translations';

  // Ensure the configImporter is refreshed for each test.
  $this->configImporter = NULL;

  // Unregister all custom stream wrappers of the parent site.
  $wrappers = \Drupal::service('stream_wrapper_manager')
    ->getWrappers(StreamWrapperInterface::ALL);
  foreach ($wrappers as $scheme => $info) {
    stream_wrapper_unregister($scheme);
  }

  // Reset statics.
  drupal_static_reset();
  $this->container = NULL;

  // Unset globals.
  unset($GLOBALS['config']);
  unset($GLOBALS['conf']);

  // Log fatal errors.
  ini_set('log_errors', 1);
  ini_set('error_log', DRUPAL_ROOT . '/' . $this->siteDirectory . '/error.log');

  // Change the database prefix.
  $this
    ->changeDatabasePrefix();

  // After preparing the environment and changing the database prefix, we are
  // in a valid test environment.
  drupal_valid_test_ua($this->databasePrefix);

  // Reset settings.
  new Settings([
    // For performance, simply use the database prefix as hash salt.
    'hash_salt' => $this->databasePrefix,
  ]);
  Environment::setTimeLimit($this->timeLimit);

  // Save and clean the shutdown callbacks array because it is static cached
  // and will be changed by the test run. Otherwise it will contain callbacks
  // from both environments and the testing environment will try to call the
  // handlers defined by the original one.
  $callbacks =& drupal_register_shutdown_function();
  $this->originalShutdownCallbacks = $callbacks;
  $callbacks = [];
}