Commit e971776b authored by Dries's avatar Dries
Browse files

- Patch #1552744 by Rob Loach, effulgentsia, sun: Fixed Bootstrap for the...

- Patch #1552744 by Rob Loach, effulgentsia, sun: Fixed Bootstrap for the Dependency Injection Container and make sure SimpleTest abides to it.
parent f72f814f
......@@ -3,7 +3,7 @@
use Drupal\Core\Database\Database;
use Symfony\Component\ClassLoader\UniversalClassLoader;
use Symfony\Component\ClassLoader\ApcUniversalClassLoader;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ContainerBuilder;
/**
* @file
......@@ -2336,23 +2336,22 @@ function drupal_get_bootstrap_phase() {
* @endcode
*
* @param $reset
* TRUE or FALSE depending on whether the Container instance is to be reset.
* A new container instance to reset the Drupal container to.
*
* @return Symfony\Component\DependencyInjection\ContainerBuilder
* @return Drupal\Component\DependencyInjection\ContainerBuilder
* The instance of the Drupal Container used to set up and maintain object
* instances.
*/
function drupal_container($reset = FALSE) {
function drupal_container(ContainerBuilder $reset = NULL) {
// We do not use drupal_static() here because we do not have a mechanism by
// which to reinitialize the stored objects, so a drupal_static_reset() call
// would leave Drupal in a nonfunctional state.
static $container = NULL;
if ($reset || !isset($container)) {
if (isset($reset)) {
$container = $reset;
}
elseif (!isset($container)) {
$container = new ContainerBuilder();
// An interface language always needs to be available for t() and other
// functions. This default is overridden by drupal_language_initialize()
// during language negotiation.
$container->register(LANGUAGE_TYPE_INTERFACE, 'Drupal\\Core\\Language\\Language');
}
return $container;
}
......
<?php
use Drupal\Core\DependencyInjection\ContainerBuilder;
/**
* @file
......@@ -181,7 +182,7 @@ class LanguageDependencyInjectionTest extends DrupalWebTestCase {
// Set up a new container to ensure we are building a new Language object
// for each test.
drupal_container(TRUE);
drupal_container(new ContainerBuilder());
}
/**
......
......@@ -542,6 +542,9 @@ class PathMonolingualTestCase extends PathTestCase {
// Set language detection to URL.
$edit = array('language_interface[enabled][language-url]' => TRUE);
$this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
// Force languages to be initialized.
drupal_language_initialize();
}
/**
......
......@@ -1340,6 +1340,7 @@ protected function prepareEnvironment() {
global $user, $language_interface, $conf;
// Store necessary current values before switching to prefixed database.
$this->originalContainer = clone drupal_container();
$this->originalLanguage = $language_interface;
$this->originalLanguageDefault = variable_get('language_default');
$this->originalConfigDirectory = $GLOBALS['config_directory_name'];
......@@ -1609,6 +1610,9 @@ protected function tearDown() {
Database::removeConnection('default');
Database::renameConnection('simpletest_original_default', 'default');
// Restore the original dependency injection container.
drupal_container($this->originalContainer);
// Restore original shutdown callbacks array to prevent original
// environment of calling handlers from test run.
$callbacks = &drupal_register_shutdown_function();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment