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;
use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent;
/**
......@@ -40,6 +41,7 @@ trait BaseRequirementValidatorTrait {
return [
PreCreateEvent::class => ['validate', $priority],
PreRequireEvent::class => ['validate', $priority],
PreApplyEvent::class => ['validate', $priority],
StatusCheckEvent::class => ['validate', $priority],
];
......
......@@ -5,6 +5,7 @@ namespace Drupal\package_manager\Validator;
use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent;
use Drupal\system\SystemManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
......@@ -59,10 +60,9 @@ final class BaseRequirementsFulfilledValidator implements EventSubscriberInterfa
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array {
// @todo Decide whether to also listen to PreRequireEvent in
// https://drupal.org/i/3345535.
return [
PreCreateEvent::class => ['validate', self::PRIORITY],
PreRequireEvent::class => ['validate', self::PRIORITY],
PreApplyEvent::class => ['validate', self::PRIORITY],
StatusCheckEvent::class => ['validate', self::PRIORITY],
];
......
......@@ -5,6 +5,7 @@ declare(strict_types = 1);
namespace Drupal\package_manager\Validator;
use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\PathLocator;
use PhpTuf\ComposerStager\Domain\Aggregate\PreconditionsTree\NoUnsupportedLinksExistInterface;
use PhpTuf\ComposerStager\Domain\Exception\PreconditionException;
......@@ -46,6 +47,11 @@ final class SymlinkValidator implements EventSubscriberInterface {
* Flags errors if the project root or stage directory contain symbolic links.
*/
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());
// The precondition requires us to pass both an active and stage directory,
......
......@@ -5,6 +5,7 @@ namespace Drupal\Tests\package_manager\Kernel;
use Drupal\package_manager\Event\PreApplyEvent;
use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\Event\PreOperationStageEvent;
use Drupal\package_manager\Event\PreRequireEvent;
use Drupal\package_manager\Event\StatusCheckEvent;
use Drupal\package_manager\ValidationResult;
use Drupal\package_manager\Validator\BaseRequirementsFulfilledValidator;
......@@ -56,6 +57,7 @@ class BaseRequirementsFulfilledValidatorTest extends PackageManagerKernelTestBas
public function providerBaseRequirement(): array {
return [
[PreCreateEvent::class],
[PreRequireEvent::class],
[PreApplyEvent::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