Skip to content
Snippets Groups Projects
Commit 1488d68c authored by omkar podey's avatar omkar podey Committed by Adam G-H
Browse files

Issue #3345535 by tedbow, omkar.podey, Wim Leers:...

Issue #3345535 by tedbow, omkar.podey, Wim Leers: BaseRequirementsFulfilledValidator should listen to PreRequireEvent
parent 34a00b34
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ namespace Drupal\package_manager\Validator; ...@@ -7,6 +7,7 @@ namespace Drupal\package_manager\Validator;
use Drupal\package_manager\Event\PreApplyEvent; use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent; use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent; use Drupal\package_manager\Event\StatusCheckEvent;
/** /**
...@@ -40,6 +41,7 @@ trait BaseRequirementValidatorTrait { ...@@ -40,6 +41,7 @@ trait BaseRequirementValidatorTrait {
return [ return [
PreCreateEvent::class => ['validate', $priority], PreCreateEvent::class => ['validate', $priority],
PreRequireEvent::class => ['validate', $priority],
PreApplyEvent::class => ['validate', $priority], PreApplyEvent::class => ['validate', $priority],
StatusCheckEvent::class => ['validate', $priority], StatusCheckEvent::class => ['validate', $priority],
]; ];
......
...@@ -5,6 +5,7 @@ namespace Drupal\package_manager\Validator; ...@@ -5,6 +5,7 @@ namespace Drupal\package_manager\Validator;
use Drupal\package_manager\Event\PreApplyEvent; use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent; use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent; use Drupal\package_manager\Event\StatusCheckEvent;
use Drupal\system\SystemManager; use Drupal\system\SystemManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
...@@ -59,10 +60,9 @@ final class BaseRequirementsFulfilledValidator implements EventSubscriberInterfa ...@@ -59,10 +60,9 @@ final class BaseRequirementsFulfilledValidator implements EventSubscriberInterfa
* {@inheritdoc} * {@inheritdoc}
*/ */
public static function getSubscribedEvents(): array { public static function getSubscribedEvents(): array {
// @todo Decide whether to also listen to PreRequireEvent in
// https://drupal.org/i/3345535.
return [ return [
PreCreateEvent::class => ['validate', self::PRIORITY], PreCreateEvent::class => ['validate', self::PRIORITY],
PreRequireEvent::class => ['validate', self::PRIORITY],
PreApplyEvent::class => ['validate', self::PRIORITY], PreApplyEvent::class => ['validate', self::PRIORITY],
StatusCheckEvent::class => ['validate', self::PRIORITY], StatusCheckEvent::class => ['validate', self::PRIORITY],
]; ];
......
...@@ -5,6 +5,7 @@ declare(strict_types = 1); ...@@ -5,6 +5,7 @@ declare(strict_types = 1);
namespace Drupal\package_manager\Validator; namespace Drupal\package_manager\Validator;
use Drupal\package_manager\Event\PreOperationStageEvent; use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\PathLocator; use Drupal\package_manager\PathLocator;
use PhpTuf\ComposerStager\Domain\Aggregate\PreconditionsTree\NoUnsupportedLinksExistInterface; use PhpTuf\ComposerStager\Domain\Aggregate\PreconditionsTree\NoUnsupportedLinksExistInterface;
use PhpTuf\ComposerStager\Domain\Exception\PreconditionException; use PhpTuf\ComposerStager\Domain\Exception\PreconditionException;
...@@ -46,6 +47,11 @@ final class SymlinkValidator implements EventSubscriberInterface { ...@@ -46,6 +47,11 @@ final class SymlinkValidator implements EventSubscriberInterface {
* Flags errors if the project root or stage directory contain symbolic links. * Flags errors if the project root or stage directory contain symbolic links.
*/ */
public function validate(PreOperationStageEvent $event): void { public function validate(PreOperationStageEvent $event): void {
if ($event instanceof PreRequireEvent) {
// We don't need to check symlinks again during PreRequireEvent; this was
// already just validated during PreCreateEvent.
return;
}
$active_dir = $this->pathFactory->create($this->pathLocator->getProjectRoot()); $active_dir = $this->pathFactory->create($this->pathLocator->getProjectRoot());
// The precondition requires us to pass both an active and stage directory, // The precondition requires us to pass both an active and stage directory,
......
...@@ -5,6 +5,7 @@ namespace Drupal\Tests\package_manager\Kernel; ...@@ -5,6 +5,7 @@ namespace Drupal\Tests\package_manager\Kernel;
use Drupal\package_manager\Event\PreApplyEvent; use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent; use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent; use Drupal\package_manager\Event\StatusCheckEvent;
use Drupal\package_manager\ValidationResult; use Drupal\package_manager\ValidationResult;
use Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator; use Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator;
...@@ -56,6 +57,7 @@ class BaseRequirementsFulfilledValidatorTest extends PackageManagerKernelTestBas ...@@ -56,6 +57,7 @@ class BaseRequirementsFulfilledValidatorTest extends PackageManagerKernelTestBas
public function providerBaseRequirement(): array { public function providerBaseRequirement(): array {
return [ return [
[PreCreateEvent::class], [PreCreateEvent::class],
[PreRequireEvent::class],
[PreApplyEvent::class], [PreApplyEvent::class],
[StatusCheckEvent::class], [StatusCheckEvent::class],
]; ];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment