diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php index 6578fae..4ddce53 100644 --- a/core/modules/simpletest/src/WebTestBase.php +++ b/core/modules/simpletest/src/WebTestBase.php @@ -907,11 +907,33 @@ protected function setUp() { chmod($directory, 0777); $request = \Drupal::request(); + // If there is a session manager, close and save the session. + $session_manager_state = 0; + if (\Drupal::getContainer()->initialized('session_manager')) { + $session_manager = \Drupal::service('session_manager'); + if ($session_manager->isStartedLazy()) { + $session_manager_state |= 0x1; + } + if ($session_manager->isStarted()) { + $session_manager_state |= 0x2; + } + $session_manager->save(); + unset($session_manager); + } + $this->kernel = DrupalKernel::createFromRequest($request, drupal_classloader(), 'prod', TRUE); + $this->kernel->prepareLegacyRequest($request); // Force the container to be built from scratch instead of loaded from the // disk. This forces us to not accidently load the parent site. $container = $this->kernel->rebuildContainer(); - $this->kernel->prepareLegacyRequest($request); + + if ($session_manager_state & 0x1) { + $container->get('session_manager')->startLazy(); + } + if ($session_manager_state & 0x2) { + $container->get('session_manager')->start(); + } + $config = $container->get('config.factory'); // Manually create and configure private and temporary files directories.