Skip to content
Snippets Groups Projects
Verified Commit 46c3c5d9 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3438034 by tannguyenhn, adwivedi008, alex.skrypnyk, alexpott: Fix...

Issue #3438034 by tannguyenhn, adwivedi008, alex.skrypnyk, alexpott: Fix Composer Scaffold plugin event listeners

(cherry picked from commit f35f0419)
parent 4dd544e7
Branches
Tags
5 merge requests!8376Drupal views: adding more granularity to the ‘use ajax’ functionality,!8300Issue #3443586 View area displays even when parent view has no results.,!7567Issue #3153723 by quietone, Hardik_Patel_12: Change the scaffolding...,!7565Issue #3153723 by quietone, Hardik_Patel_12: Change the scaffolding...,!7509Change label "Block description" to "Block type"
Pipeline #141432 passed with warnings
Pipeline: drupal

#141475

    Pipeline: drupal

    #141472

      Pipeline: drupal

      #141469

        +7
        ......@@ -3,7 +3,6 @@
        namespace Drupal\Composer\Plugin\Scaffold;
        use Composer\Composer;
        use Composer\EventDispatcher\EventDispatcher;
        use Composer\Installer\PackageEvent;
        use Composer\IO\IOInterface;
        use Composer\Package\PackageInterface;
        ......@@ -143,7 +142,7 @@ public function scaffold() {
        }
        // Call any pre-scaffold scripts that may be defined.
        $dispatcher = new EventDispatcher($this->composer, $this->io);
        $dispatcher = $this->composer->getEventDispatcher();
        $dispatcher->dispatch(self::PRE_DRUPAL_SCAFFOLD_CMD);
        // Fetch the list of file mappings from each allowed package and normalize
        ......
        ......@@ -148,4 +148,15 @@ public function testScaffoldMessagesDoNotPrintTwice() {
        $this->assertStringNotContainsString('- Copy [web-root]/update.php from assets/update.php', $stdout);
        }
        /**
        * Tests to see if scaffold events are dispatched and picked up by the plugin.
        */
        public function testScaffoldEvents(): void {
        $topLevelProjectDir = 'scaffold-events-fixture';
        $sut = $this->fixturesDir . '/' . $topLevelProjectDir;
        $output = $this->mustExec("composer install --no-ansi", $sut);
        $this->assertStringContainsString('Hello preDrupalScaffoldCmd', $output);
        $this->assertStringContainsString('Hello postDrupalScaffoldCmd', $output);
        }
        }
        {
        "name": "fixtures/composer-plugin-implements-scaffold-events",
        "type": "composer-plugin",
        "require": {
        "php": ">=8.2",
        "composer-plugin-api": "^2",
        "drupal/core-composer-scaffold": "*"
        },
        "autoload": {
        "psr-4": {
        "Drupal\\Tests\\fixture\\Composer\\Plugin\\": "src"
        }
        },
        "extra": {
        "class": "Drupal\\Tests\\fixture\\Composer\\Plugin\\ComposerPluginImplementsScaffoldEvents"
        }
        }
        <?php
        declare(strict_types = 1);
        namespace Drupal\Tests\fixture\Composer\Plugin;
        use Composer\EventDispatcher\Event;
        use Composer\EventDispatcher\EventSubscriberInterface;
        use Composer\Plugin\PluginInterface;
        use Composer\Composer;
        use Composer\IO\IOInterface;
        use Drupal\Composer\Plugin\Scaffold\Handler;
        /**
        * A fixture composer plugin implement Drupal scaffold events.
        */
        class ComposerPluginImplementsScaffoldEvents implements PluginInterface, EventSubscriberInterface {
        /**
        * {@inheritdoc}
        */
        public static function getSubscribedEvents(): array {
        return [
        Handler::PRE_DRUPAL_SCAFFOLD_CMD => 'preDrupalScaffoldCmd',
        Handler::POST_DRUPAL_SCAFFOLD_CMD => 'postDrupalScaffoldCmd',
        ];
        }
        /**
        * Implements pre Drupal scaffold cmd.
        */
        public static function preDrupalScaffoldCmd(Event $event): void {
        print 'Hello preDrupalScaffoldCmd' . PHP_EOL;
        }
        /**
        * Implements post Drupal scaffold cmd.
        */
        public static function postDrupalScaffoldCmd(Event $event): void {
        print 'Hello postDrupalScaffoldCmd' . PHP_EOL;
        }
        /**
        * {@inheritdoc}
        */
        public function activate(Composer $composer, IOInterface $io) {
        }
        /**
        * {@inheritdoc}
        */
        public function deactivate(Composer $composer, IOInterface $io) {
        }
        /**
        * {@inheritdoc}
        */
        public function uninstall(Composer $composer, IOInterface $io) {
        }
        }
        {
        "name": "fixtures/drupal-drupal",
        "type": "project",
        "minimum-stability": "dev",
        "prefer-stable": true,
        "repositories": {
        "packagist.org": false,
        "composer-scaffold": {
        "type": "path",
        "url": "__PROJECT_ROOT__",
        "options": {
        "symlink": true
        }
        },
        "fixtures/composer-plugin-implements-scaffold-events": {
        "type": "path",
        "url": "../composer-plugin-implements-scaffold-events",
        "options": {
        "symlink": true
        }
        }
        },
        "require": {
        "drupal/core-composer-scaffold": "*",
        "fixtures/composer-plugin-implements-scaffold-events": "*"
        },
        "extra": {
        "drupal-scaffold": {
        "allowed-packages": [
        "fixtures/composer-plugin-implements-scaffold-events"
        ],
        "locations": {
        "web-root": "./"
        },
        "symlink": __SYMLINK__
        }
        },
        "config": {
        "allow-plugins": {
        "drupal/core-composer-scaffold": true,
        "fixtures/composer-plugin-implements-scaffold-events": true
        }
        }
        }
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Please register or to comment