You are here

protected function DrupalFlushAllCachesInInstallerTest::prepareEnvironment in Drupal 9

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.

This method is private as it must only be called once by BrowserTestBase::setUp() (multiple invocations for the same test would have unpredictable consequences) and it must not be callable or overridable by test classes.

Overrides FunctionalTestSetupTrait::prepareEnvironment

File

core/tests/Drupal/FunctionalTests/Installer/DrupalFlushAllCachesInInstallerTest.php, line 28

Class

DrupalFlushAllCachesInInstallerTest
Tests drupal_flush_all_caches() during an install.

Namespace

Drupal\FunctionalTests\Installer

Code

protected function prepareEnvironment() {
  parent::prepareEnvironment();
  $info = [
    'type' => 'profile',
    'core_version_requirement' => '*',
    'name' => 'Cache flush test',
    'install' => [
      'language',
    ],
  ];

  // File API functions are not available yet.
  $path = $this->siteDirectory . '/profiles/cache_flush_test';
  mkdir($path, 0777, TRUE);
  file_put_contents("{$path}/cache_flush_test.info.yml", Yaml::encode($info));
  $php_code = <<<EOF
<?php
function cache_flush_test_install() {
  // Note it is bad practice to call this method during hook_install() as it
  // results in an additional expensive container rebuild.
  drupal_flush_all_caches();
  // Ensure services are available after calling drupal_flush_all_caches().
  \\Drupal::state()->set('cache_flush_test', \\Drupal::hasService('language_negotiator'));
}
EOF;
  file_put_contents("{$path}/cache_flush_test.install", $php_code);
}