Skip to content
Snippets Groups Projects
Verified Commit 152f9511 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 d8e98d67
No related branches found
No related tags found
10 merge requests!12802Issue #3537193 by opauwlo: Add enable absolute path option for CKEditor5 image uploads,!12745Fixed: Path alias language doesn't changes on changing of node language,!12684Issue #3220784,!12537Add ViewsConfigUpdater deprecation support for default_argument_skip_url,!12523Issue #3493858 by vidorado, xavier.masson, smustgrave: Extend ViewsBlockBase...,!122353526426-warning-for-missing,!11958Issue #3490507 by alexpott, smustgrave: Fix bogus mocking in...,!11769Issue #3517987: Add option to contextual filters to encode slashes in query parameter.,!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!9944Issue #3483353: Consider making the createCopy config action optionally fail...
Pipeline #293054 passed with warnings
Pipeline: drupal

#293093

    Pipeline: drupal

    #293083

      Pipeline: drupal

      #293072

        +1
        ......@@ -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());
        }
        }
        ......@@ -87,8 +87,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));
        ......@@ -99,6 +99,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.
        Please register or to comment