Skip to content
Snippets Groups Projects
Verified Commit eab209db authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3478628 by oily, alexpott, catch, sheshsharma, osopolar, dunx, shane...

Issue #3478628 by oily, alexpott, catch, sheshsharma, osopolar, dunx, shane birley, joegl: Fatal error: Uncaught TypeError: Drupal\Core\Extension\ThemeHandler::addTheme()

(cherry picked from commit 22ef552a)
parent 92e0fdbe
Branches
Tags
5 merge requests!12802Issue #3537193 by opauwlo: Add enable absolute path option for CKEditor5 image uploads,!12684Issue #3220784,!12523Issue #3493858 by vidorado, xavier.masson, smustgrave: Extend ViewsBlockBase...,!122353526426-warning-for-missing,!8559#3450868 Add ViewsConfigUpdater deprecation support for default_argument_skip_url
Pipeline #380303 passed
......@@ -67,11 +67,18 @@ public function getDefault() {
public function listInfo() {
if (!isset($this->list)) {
$this->list = [];
$installed_themes = $this->configFactory->get('core.extension')->get('theme');
$installed_themes = array_keys($this->configFactory->get('core.extension')->get('theme'));
if (!empty($installed_themes)) {
$list = $this->themeList->getList();
foreach (array_keys($installed_themes) as $theme_name) {
$this->addTheme($list[$theme_name]);
foreach ($installed_themes as $theme) {
// Do not add installed themes that cannot be found by the
// extension.list.theme service. If a theme does go missing from the
// file system any call to ::getTheme() will result in an exception
// and an error being logged. Ignoring the problem here allows the
// theme system to fix itself while updating.
if (isset($list[$theme])) {
$this->addTheme($list[$theme]);
}
}
}
}
......
......@@ -46,7 +46,7 @@ protected function setUp(): void {
$this->configFactory = $this->getConfigFactoryStub([
'core.extension' => [
'module' => [],
'theme' => [],
'theme' => ['stark' => 'stark'],
'disabled' => [
'theme' => [],
],
......@@ -108,6 +108,16 @@ public function testThemeLibrariesEmpty(): void {
}
}
/**
* Test that a missing theme doesn't break ThemeHandler::listInfo().
*
* @covers ::listInfo
*/
public function testMissingTheme(): void {
$themes = $this->themeHandler->listInfo();
$this->assertSame([], $themes);
}
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment