From 116104c97f1b2fc5e326ba9a3169ebb6ff955375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= <adam@phenaproxima.net> Date: Fri, 8 Apr 2022 14:31:29 -0400 Subject: [PATCH] Split test site exclusions into own class --- package_manager/package_manager.services.yml | 6 +++ .../ExcludedPathsSubscriber.php | 4 -- .../src/EventSubscriber/TestSiteExcluder.php | 50 +++++++++++++++++++ 3 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 package_manager/src/EventSubscriber/TestSiteExcluder.php diff --git a/package_manager/package_manager.services.yml b/package_manager/package_manager.services.yml index 3fa0bfa707..61febebe74 100644 --- a/package_manager/package_manager.services.yml +++ b/package_manager/package_manager.services.yml @@ -128,6 +128,12 @@ services: - '@string_translation' tags: - { name: event_subscriber } + package_manager.test_site_excluder: + class: Drupal\package_manager\EventSubscriber\TestSiteExcluder + arguments: + - '@package_manager.path_locator' + tags: + - { name: event_subscriber } package_manager.excluded_paths_subscriber: class: Drupal\package_manager\EventSubscriber\ExcludedPathsSubscriber arguments: diff --git a/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php b/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php index 844105463c..99d649794e 100644 --- a/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php +++ b/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php @@ -83,10 +83,6 @@ class ExcludedPathsSubscriber implements EventSubscriberInterface { // project root, and paths that are relative to the web root. $web = $project = []; - // Always ignore automated test directories. If they exist, they will be in - // the web root. - $web[] = 'sites/simpletest'; - // If the core-vendor-hardening plugin (used in the legacy-project template) // is present, it may have written security hardening files in the vendor // directory. They should always be ignored. diff --git a/package_manager/src/EventSubscriber/TestSiteExcluder.php b/package_manager/src/EventSubscriber/TestSiteExcluder.php new file mode 100644 index 0000000000..8c2ea94b7a --- /dev/null +++ b/package_manager/src/EventSubscriber/TestSiteExcluder.php @@ -0,0 +1,50 @@ +<?php + +namespace Drupal\package_manager\EventSubscriber; + +use Drupal\package_manager\Event\PreApplyEvent; +use Drupal\package_manager\Event\PreCreateEvent; +use Drupal\package_manager\Event\StageEvent; +use Drupal\package_manager\PathLocator; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Excludes 'sites/simpletest' from staging operations. + */ +class TestSiteExcluder implements EventSubscriberInterface { + + use PathExclusionsTrait; + + /** + * Constructs a TestSiteExcluder object. + * + * @param \Drupal\package_manager\PathLocator $path_locator + * The path locator service. + */ + public function __construct(PathLocator $path_locator) { + $this->pathLocator = $path_locator; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() { + return [ + PreCreateEvent::class => 'excludeTestSites', + PreApplyEvent::class => 'excludeTestSites', + ]; + } + + /** + * Excludes sites/simpletest from staging operations. + * + * @param \Drupal\package_manager\Event\StageEvent $event + * The event object. + */ + public function excludeTestSites(StageEvent $event): void { + // Always ignore automated test directories. If they exist, they will be in + // the web root. + $this->excludeInWebRoot($event, ['sites/simpletest']); + } + +} -- GitLab