Unverified Commit fd58fbe7 authored by larowlan's avatar larowlan
Browse files

Issue #3222577 by alexpott, podarok, daffie: ServiceNotFoundException You have...

Issue #3222577 by alexpott, podarok, daffie: ServiceNotFoundException You have requested a non-existent service "language_negotiator" - hook_modules_installed()
parent d2462e3d
......@@ -515,6 +515,7 @@ public function shutdown() {
}
$this->container->get('stream_wrapper_manager')->unregister();
$this->booted = FALSE;
$this->configStorage = NULL;
$this->container = NULL;
$this->moduleList = NULL;
$this->moduleData = [];
......
......@@ -292,7 +292,11 @@ protected function prepareRequestForGenerator($clean_urls = TRUE, $override_serv
*/
protected function doInstall() {
require_once DRUPAL_ROOT . '/core/includes/install.core.inc';
install_drupal($this->classLoader, $this->installParameters());
$parameters = $this->installParameters();
// Simulate a real install which does not start with the any connections set
// in \Drupal\Core\Database\Database::$connections.
Database::removeConnection('default');
install_drupal($this->classLoader, $parameters);
}
/**
......
<?php
namespace Drupal\FunctionalTests\Installer;
use Drupal\Core\Serialization\Yaml;
use Drupal\Tests\BrowserTestBase;
/**
* Tests drupal_flush_all_caches() during an install.
*
* @group Installer
*/
class DrupalFlushAllCachesInInstallerTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected $profile = 'cache_flush_test';
/**
* {@inheritdoc}
*/
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);
}
/**
* Confirms that the installation succeeded.
*/
public function testInstalled() {
$this->assertTrue(\Drupal::state()->get('cache_flush_test'));
}
}
......@@ -92,9 +92,9 @@ public function testInstaller() {
$this->rebuildContainer();
/** @var \Drupal\user\Entity\User $account */
$account = User::load(0);
$this->assertEquals('en', $account->language()->getId(), 'Anonymous user is English.');
$this->assertEquals('de', $account->language()->getId(), 'Anonymous user is German.');
$account = User::load(1);
$this->assertEquals('en', $account->language()->getId(), 'Administrator user is English.');
$this->assertEquals('de', $account->language()->getId(), 'Administrator user is German.');
$account = $this->drupalCreateUser();
$this->assertEquals('de', $account->language()->getId(), 'New user is German.');
......
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