protected function FunctionalTestSetupTrait::installDefaultThemeFromClassProperty in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php \Drupal\Core\Test\FunctionalTestSetupTrait::installDefaultThemeFromClassProperty()
- 10 core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php \Drupal\Core\Test\FunctionalTestSetupTrait::installDefaultThemeFromClassProperty()
Installs the default theme defined by `static::$defaultTheme` when needed.
To install a test theme outside of the testing environment, add
$settings['extension_discovery_scan_tests'] = TRUE;
to your settings.php.
Parameters
\Symfony\Component\DependencyInjection\ContainerInterface $container: The container.
Throws
\Exception If the test case does not initialize default theme.
2 calls to FunctionalTestSetupTrait::installDefaultThemeFromClassProperty()
- BrowserTestBase::installDrupal in core/
tests/ Drupal/ Tests/ BrowserTestBase.php - Installs Drupal into the Simpletest site.
- InstallerTestBase::setUp in core/
tests/ Drupal/ FunctionalTests/ Installer/ InstallerTestBase.php
File
- core/
lib/ Drupal/ Core/ Test/ FunctionalTestSetupTrait.php, line 417
Class
- FunctionalTestSetupTrait
- Defines a trait for shared functional test setup functionality.
Namespace
Drupal\Core\TestCode
protected function installDefaultThemeFromClassProperty(ContainerInterface $container) {
// Use the install profile to determine the default theme if configured and
// not already specified.
$profile = $container
->getParameter('install_profile');
$default_sync_path = $container
->get('extension.list.profile')
->getPath($profile) . '/config/sync';
$profile_config_storage = new FileStorage($default_sync_path, StorageInterface::DEFAULT_COLLECTION);
if (!isset($this->defaultTheme) && $profile_config_storage
->exists('system.theme')) {
$this->defaultTheme = $profile_config_storage
->read('system.theme')['default'];
}
$default_install_path = $container
->get('extension.list.profile')
->getPath($profile) . '/' . InstallStorage::CONFIG_INSTALL_DIRECTORY;
$profile_config_storage = new FileStorage($default_install_path, StorageInterface::DEFAULT_COLLECTION);
if (!isset($this->defaultTheme) && $profile_config_storage
->exists('system.theme')) {
$this->defaultTheme = $profile_config_storage
->read('system.theme')['default'];
}
// Require a default theme to be specified at this point.
if (!isset($this->defaultTheme)) {
throw new \Exception('Drupal\\Tests\\BrowserTestBase::$defaultTheme is required. See https://www.drupal.org/node/3083055, which includes recommendations on which theme to use.');
}
// Ensure the default theme is installed.
$container
->get('theme_installer')
->install([
$this->defaultTheme,
], TRUE);
$system_theme_config = $container
->get('config.factory')
->getEditable('system.theme');
if ($system_theme_config
->get('default') !== $this->defaultTheme) {
$system_theme_config
->set('default', $this->defaultTheme)
->save();
}
}