diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml index fc751fa92eee8706e278613ed0c277d0a0091205..6eb57aa7a3c4a1cca28efb0e3d42718164ed0055 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 17f0095f3ee299aebe9ede9f32162bd0077aa95c..d2c2a1305bb1e76d2e8b5a4901e89032d0f26212 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 01467ce09abe11cff39a095b4b17694ce4661ccb..d14d2af1e9e6d40f185a91a74bcfbdb899ff665f 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 6b34a1258fbdb2fe3641b6ddaf160257530632ce..61f0845de0a71a1ac46465c857a608781990d116 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 fa6e9ec412101f3aadbd94198202e48d2602ee36..f7d000b311182c2aecf62574cabff97637129ed7 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 232150a8e1a7ba5ef7604efad0527df547ffeca3..61e54d7658607177f9acfde4d2d3b5147e3f8f49 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} */