Issue #3222577 by alexpott, podarok, daffie: ServiceNotFoundException You have requested a non-existent service "language_negotiator" - hook_modules_installed()
parent
d2462e3d01
commit
fd58fbe7ee
|
@ -515,6 +515,7 @@ class DrupalKernel implements DrupalKernelInterface, TerminableInterface {
|
|||
}
|
||||
$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 @@ trait FunctionalTestSetupTrait {
|
|||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
<?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 @@ class InstallerTranslationTest extends InstallerTestBase {
|
|||
$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.');
|
||||
|
||||
|
|
Loading…
Reference in New Issue