Skip to content
Snippets Groups Projects
Verified Commit 62027b5d authored by Dave Long's avatar Dave Long
Browse files

Issue #3457863 by grimreaper, catch, pdureau, maboy, longwave: YAML discovery...

Issue #3457863 by grimreaper, catch, pdureau, maboy, longwave: YAML discovery does not take theme inheritance into account

(cherry picked from commit 5e0ff5a8)
parent 26519bfa
No related branches found
No related tags found
15 merge requests!10663Issue #3495778: Update phpdoc in FileSaveHtaccessLoggingTest,!10451Issue #3472458 by watergate, smustgrave: CKEditor 5 show blocks label is not translated,!103032838547 Fix punctuation rules for inline label suffix colon with CSS only,!10150Issue #3467294 by quietone, nod_, smustgrave, catch, longwave: Change string...,!10130Resolve #3480321 "Second level menu",!9936Issue #3483087: Check the module:// prefix in the translation server path and replace it with the actual module path,!9933Issue #3394728 by ankondrat4: Undefined array key "#prefix" and deprecated function: explode() in Drupal\file\Element\ManagedFile::uploadAjaxCallback(),!9914Issue #3451136 by quietone, gapple, ghost of drupal past: Improve...,!9882Draft: Issue #3481777 In bulk_form ensure the triggering element is the bulk_form button,!9839Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9815Issue #3480025: There is no way to remove entity cache items,!9757Issue #3478869 Add "All" or overview links to parent links,!9752Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9749Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9678Issue #3465132 by catch, Spokje, nod_: Show test run time by class in run-tests.sh output
Pipeline #293357 passed
Pipeline: drupal

#293359

    ......@@ -69,8 +69,10 @@ public function listInfo() {
    $this->list = [];
    $installed_themes = $this->configFactory->get('core.extension')->get('theme');
    if (!empty($installed_themes)) {
    $installed_themes = array_intersect_key($this->themeList->getList(), $installed_themes);
    array_map([$this, 'addTheme'], $installed_themes);
    $list = $this->themeList->getList();
    foreach (array_keys($installed_themes) as $theme_name) {
    $this->addTheme($list[$theme_name]);
    }
    }
    }
    return $this->list;
    ......
    name: 'Theme test child theme'
    type: theme
    version: VERSION
    base theme: test_parent_theme
    theme_parent_provided_layout:
    class: '\Drupal\Core\Layout\LayoutDefault'
    label: Child
    name: 'Theme test parent theme'
    type: theme
    version: VERSION
    base theme: false
    theme_parent_provided_layout:
    class: '\Drupal\Core\Layout\LayoutDefault'
    label: Parent
    <?php
    declare(strict_types=1);
    namespace Drupal\KernelTests\Core\Layout;
    use Drupal\Core\Layout\LayoutDefinition;
    use Drupal\KernelTests\KernelTestBase;
    /**
    * @coversDefaultClass \Drupal\Core\Layout\LayoutPluginManager
    * @group Layout
    */
    class LayoutPluginManagerTest extends KernelTestBase {
    /**
    * {@inheritdoc}
    */
    protected static $modules = ['layout_discovery'];
    /**
    * {@inheritdoc}
    */
    protected function setUp(): void {
    parent::setUp();
    $this->container->get('theme_installer')->install(['test_child_theme']);
    $this->activateTheme('test_child_theme');
    }
    /**
    * Tests that layout plugins are correctly overridden.
    */
    public function testPluginOverride(): void {
    /** @var \Drupal\Core\Layout\LayoutPluginManagerInterface $layouts_manager */
    $layouts_manager = $this->container->get('plugin.manager.core.layout');
    $definitions = $layouts_manager->getDefinitions();
    $this->assertInstanceOf(LayoutDefinition::class, $definitions['theme_parent_provided_layout']);
    $this->assertSame('Child', $definitions['theme_parent_provided_layout']->getLabel()->render());
    }
    /**
    * Activates a specified theme.
    *
    * Installs the theme if not already installed and makes it the active theme.
    *
    * @param string $theme_name
    * The name of the theme to be activated.
    */
    protected function activateTheme(string $theme_name): void {
    $this->container->get('theme_installer')->install([$theme_name]);
    /** @var \Drupal\Core\Theme\ThemeInitializationInterface $theme_initializer */
    $theme_initializer = $this->container->get('theme.initialization');
    /** @var \Drupal\Core\Theme\ThemeManagerInterface $theme_manager */
    $theme_manager = $this->container->get('theme.manager');
    $theme_manager->setActiveTheme($theme_initializer->getActiveThemeByName($theme_name));
    $this->assertSame($theme_name, $theme_manager->getActiveTheme()->getName());
    }
    }
    ......@@ -88,8 +88,8 @@ public function testInstall(): void {
    * Tests installing a sub-theme.
    */
    public function testInstallSubTheme(): void {
    $name = 'test_subtheme';
    $base_name = 'test_basetheme';
    $name = 'test_child_theme';
    $base_name = 'test_parent_theme';
    $themes = $this->themeHandler()->listInfo();
    $this->assertEmpty(array_keys($themes));
    ......@@ -100,6 +100,12 @@ public function testInstallSubTheme(): void {
    $this->assertTrue(isset($themes[$name]));
    $this->assertTrue(isset($themes[$base_name]));
    $expectedOrder = [
    $base_name,
    $name,
    ];
    $this->assertEquals($expectedOrder, array_keys($themes));
    $this->themeInstaller()->uninstall([$name]);
    $themes = $this->themeHandler()->listInfo();
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment