From b41e210666b8c8589d9b43dd3e4dc2d3083e551a Mon Sep 17 00:00:00 2001 From: phenaproxima <phenaproxima@205645.no-reply.drupal.org> Date: Thu, 11 Aug 2022 20:52:21 +0000 Subject: [PATCH] Issue #3303174 by phenaproxima: Stage should inject the path factory properly --- automatic_updates.services.yml | 2 ++ .../automatic_updates_extensions.services.yml | 1 + .../AutomaticUpdatesExtensionsKernelTestBase.php | 7 +++++-- .../tests/src/Kernel/ExtensionUpdaterTest.php | 10 +--------- package_manager/src/Stage.php | 7 +++++-- .../tests/src/Kernel/PackageManagerKernelTestBase.php | 11 ++--------- 6 files changed, 16 insertions(+), 22 deletions(-) diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml index fc751fa92e..6eb57aa7a3 100644 --- a/automatic_updates.services.yml +++ b/automatic_updates.services.yml @@ -26,6 +26,7 @@ services: - '@event_dispatcher' - '@tempstore.shared' - '@datetime.time' + - '@PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface' automatic_updates.cron_updater: class: Drupal\automatic_updates\CronUpdater arguments: @@ -43,6 +44,7 @@ services: - '@event_dispatcher' - '@tempstore.shared' - '@datetime.time' + - '@PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface' automatic_updates.staged_projects_validator: class: Drupal\automatic_updates\Validator\StagedProjectsValidator arguments: diff --git a/automatic_updates_extensions/automatic_updates_extensions.services.yml b/automatic_updates_extensions/automatic_updates_extensions.services.yml index 17f0095f3e..d2c2a1305b 100644 --- a/automatic_updates_extensions/automatic_updates_extensions.services.yml +++ b/automatic_updates_extensions/automatic_updates_extensions.services.yml @@ -11,6 +11,7 @@ services: - '@event_dispatcher' - '@tempstore.shared' - '@datetime.time' + - '@PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface' automatic_updates_extensions.validator.packages_installed_with_composer: class: Drupal\automatic_updates_extensions\Validator\PackagesInstalledWithComposerValidator arguments: diff --git a/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php b/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php index 01467ce09a..d14d2af1e9 100644 --- a/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php +++ b/automatic_updates_extensions/tests/src/Kernel/AutomaticUpdatesExtensionsKernelTestBase.php @@ -7,6 +7,7 @@ use Drupal\automatic_updates_extensions\ExtensionUpdater; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\package_manager\Exception\StageValidationException; use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase; +use Drupal\Tests\package_manager\Kernel\TestPathFactory; use Drupal\Tests\package_manager\Kernel\TestStageTrait; use GuzzleHttp\Client; use GuzzleHttp\Handler\MockHandler; @@ -74,7 +75,8 @@ abstract class AutomaticUpdatesExtensionsKernelTestBase extends AutomaticUpdates $this->container->get('file_system'), $this->container->get('event_dispatcher'), $this->container->get('tempstore.shared'), - $this->container->get('datetime.time') + $this->container->get('datetime.time'), + new TestPathFactory() ); } @@ -163,7 +165,8 @@ abstract class AutomaticUpdatesExtensionsKernelTestBase extends AutomaticUpdates $this->container->get('file_system'), $this->container->get('event_dispatcher'), $this->container->get('tempstore.shared'), - $this->container->get('datetime.time') + $this->container->get('datetime.time'), + new TestPathFactory() ); } diff --git a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php index 6b34a1258f..61f0845de0 100644 --- a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php +++ b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php @@ -3,7 +3,6 @@ namespace Drupal\Tests\automatic_updates_extensions\Kernel; use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase; -use Drupal\Tests\package_manager\Kernel\TestPathFactory; use Drupal\Tests\user\Traits\UserCreationTrait; /** @@ -49,14 +48,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase { $this->createVirtualProject(__DIR__ . '/../../fixtures/fake-site'); - /** @var \Drupal\automatic_updates_extensions\ExtensionUpdater $updater */ - $updater = $this->container->get('automatic_updates_extensions.updater'); - // @todo Remove this hack in https://www.drupal.org/i/3303174. - $property = new \ReflectionProperty($updater, 'pathFactory'); - $property->setAccessible(TRUE); - $property->setValue($updater, new TestPathFactory()); - - $id = $updater->begin([ + $id = $this->container->get('automatic_updates_extensions.updater')->begin([ 'my_module' => '9.8.1', // Use a legacy version number to ensure they are converted to semantic // version numbers which will work with the drupal.org Composer facade. diff --git a/package_manager/src/Stage.php b/package_manager/src/Stage.php index fa6e9ec412..f7d000b311 100644 --- a/package_manager/src/Stage.php +++ b/package_manager/src/Stage.php @@ -28,6 +28,7 @@ use PhpTuf\ComposerStager\Domain\Core\Stager\StagerInterface; use PhpTuf\ComposerStager\Domain\Exception\InvalidArgumentException; use PhpTuf\ComposerStager\Domain\Exception\PreconditionException; use PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactory; +use PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface; use PhpTuf\ComposerStager\Infrastructure\Value\PathList\PathList; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; @@ -190,8 +191,10 @@ class Stage { * The shared tempstore factory. * @param \Drupal\Component\Datetime\TimeInterface $time * The time service. + * @param \PhpTuf\ComposerStager\Infrastructure\Factory\Path\PathFactoryInterface $path_factory + * (optional) The path factory service. */ - public function __construct(ConfigFactoryInterface $config_factory, PathLocator $path_locator, BeginnerInterface $beginner, StagerInterface $stager, CommitterInterface $committer, FileSystemInterface $file_system, EventDispatcherInterface $event_dispatcher, SharedTempStoreFactory $shared_tempstore, TimeInterface $time) { + public function __construct(ConfigFactoryInterface $config_factory, PathLocator $path_locator, BeginnerInterface $beginner, StagerInterface $stager, CommitterInterface $committer, FileSystemInterface $file_system, EventDispatcherInterface $event_dispatcher, SharedTempStoreFactory $shared_tempstore, TimeInterface $time, PathFactoryInterface $path_factory = NULL) { $this->configFactory = $config_factory; $this->pathLocator = $path_locator; $this->beginner = $beginner; @@ -201,7 +204,7 @@ class Stage { $this->eventDispatcher = $event_dispatcher; $this->time = $time; $this->tempStore = $shared_tempstore->get('package_manager_stage'); - $this->pathFactory = new PathFactory(); + $this->pathFactory = $path_factory ?: new PathFactory(); } /** diff --git a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php index 232150a8e1..61e54d7658 100644 --- a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php +++ b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php @@ -97,7 +97,8 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase { $this->container->get('file_system'), $this->container->get('event_dispatcher'), $this->container->get('tempstore.shared'), - $this->container->get('datetime.time') + $this->container->get('datetime.time'), + new TestPathFactory() ); } @@ -234,14 +235,6 @@ abstract class PackageManagerKernelTestBase extends KernelTestBase { */ trait TestStageTrait { - /** - * {@inheritdoc} - */ - public function __construct(...$arguments) { - parent::__construct(...$arguments); - $this->pathFactory = new TestPathFactory(); - } - /** * {@inheritdoc} */ -- GitLab