diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml index 3e79a4a3fe05e55769b534c1a299bc45a091c023..287d6d2b0f554a71bc6c7a0b21b66b8a22fe203f 100644 --- a/automatic_updates.services.yml +++ b/automatic_updates.services.yml @@ -49,12 +49,6 @@ services: - '@string_translation' tags: - { name: event_subscriber } - automatic_updates.validator.settings: - class: Drupal\automatic_updates\Validator\SettingsValidator - arguments: - - '@string_translation' - tags: - - { name: event_subscriber } automatic_updates.release_chooser: class: Drupal\automatic_updates\ReleaseChooser arguments: @@ -65,6 +59,12 @@ services: - '@package_manager.validator.composer_executable' tags: - { name: event_subscriber } + automatic_updates.settings_validator: + class: Drupal\automatic_updates\Validator\PackageManagerReadinessCheck + arguments: + - '@package_manager.validator.settings' + tags: + - { name: event_subscriber } automatic_updates.validator.composer_settings: class: Drupal\automatic_updates\Validator\PackageManagerReadinessCheck arguments: diff --git a/package_manager/package_manager.services.yml b/package_manager/package_manager.services.yml index e83f61fd518f9e4f6dc048b78b3ae858083ad70d..96b7393823a60b2011cef080f6437fbc5f38a6bb 100644 --- a/package_manager/package_manager.services.yml +++ b/package_manager/package_manager.services.yml @@ -240,3 +240,9 @@ services: calls: - ['setContainer', ['@service_container']] lazy: true + package_manager.validator.settings: + class: Drupal\package_manager\Validator\SettingsValidator + arguments: + - '@string_translation' + tags: + - { name: event_subscriber } diff --git a/src/Validator/SettingsValidator.php b/package_manager/src/Validator/SettingsValidator.php similarity index 51% rename from src/Validator/SettingsValidator.php rename to package_manager/src/Validator/SettingsValidator.php index 95d8cca7de3af7c93c800746c4e06e6163a9d5e4..19192334f97c0731ba8787064aadc702d18ff866 100644 --- a/src/Validator/SettingsValidator.php +++ b/package_manager/src/Validator/SettingsValidator.php @@ -1,22 +1,17 @@ <?php -namespace Drupal\automatic_updates\Validator; +namespace Drupal\package_manager\Validator; -use Drupal\automatic_updates\Event\ReadinessCheckEvent; -use Drupal\automatic_updates\Updater; use Drupal\Core\Site\Settings; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslationInterface; use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\Event\PreOperationStageEvent; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** - * @internal - * This class is an internal part of the module's update handling and - * should not be used by external code. + * Checks that Drupal's settings are valid for Package Manager. */ -class SettingsValidator implements EventSubscriberInterface { +class SettingsValidator implements PreOperationStageValidatorInterface { use StringTranslationTrait; @@ -31,13 +26,10 @@ class SettingsValidator implements EventSubscriberInterface { } /** - * Validates site settings before an update starts. - * - * @param \Drupal\package_manager\Event\PreOperationStageEvent $event - * The event object. + * {@inheritdoc} */ - public function checkSettings(PreOperationStageEvent $event): void { - if ($event->getStage() instanceof Updater && Settings::get('update_fetch_with_http_fallback')) { + public function validateStagePreOperation(PreOperationStageEvent $event): void { + if (Settings::get('update_fetch_with_http_fallback')) { $event->addError([ $this->t('The <code>update_fetch_with_http_fallback</code> setting must be disabled.'), ]); @@ -49,8 +41,7 @@ class SettingsValidator implements EventSubscriberInterface { */ public static function getSubscribedEvents() { return [ - ReadinessCheckEvent::class => 'checkSettings', - PreCreateEvent::class => 'checkSettings', + PreCreateEvent::class => 'validateStagePreOperation', ]; } diff --git a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php b/package_manager/tests/src/Kernel/SettingsValidatorTest.php similarity index 72% rename from tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php rename to package_manager/tests/src/Kernel/SettingsValidatorTest.php index 236af459fa6a0bad069ae1eb977273aeb526325d..5a1633a88408228bec6af1f7f2808368bfb6bb3e 100644 --- a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php +++ b/package_manager/tests/src/Kernel/SettingsValidatorTest.php @@ -1,22 +1,16 @@ <?php -namespace Drupal\Tests\automatic_updates\Kernel\ReadinessValidation; +namespace Drupal\Tests\package_manager\Kernel; use Drupal\package_manager\Exception\StageValidationException; use Drupal\package_manager\ValidationResult; -use Drupal\Tests\automatic_updates\Kernel\AutomaticUpdatesKernelTestBase; /** - * @covers \Drupal\Tests\automatic_updates\Kernel\ReadinessValidation\SettingsValidatorTest + * @covers \Drupal\package_manager\Validator\SettingsValidator * - * @group automatic_updates + * @group package_manager */ -class SettingsValidatorTest extends AutomaticUpdatesKernelTestBase { - - /** - * {@inheritdoc} - */ - protected static $modules = ['automatic_updates']; +class SettingsValidatorTest extends PackageManagerKernelTestBase { /** * Data provider for ::testSettingsValidation(). @@ -50,11 +44,8 @@ class SettingsValidatorTest extends AutomaticUpdatesKernelTestBase { $this->setSetting('update_fetch_with_http_fallback', $setting); - $this->assertCheckerResultsFromManager($expected_results, TRUE); try { - $this->container->get('automatic_updates.updater')->begin([ - 'drupal' => '9.8.1', - ]); + $this->createStage()->create(); // If there was no exception, ensure we're not expecting any errors. $this->assertSame([], $expected_results); } diff --git a/tests/src/Kernel/ReadinessValidation/PackageManagerReadinessChecksTest.php b/tests/src/Kernel/ReadinessValidation/PackageManagerReadinessChecksTest.php index 882e86d52416841b6df572f7665f3a4902234218..123cb0ec826ce4a27627669a11ec5a53bc9d0b1d 100644 --- a/tests/src/Kernel/ReadinessValidation/PackageManagerReadinessChecksTest.php +++ b/tests/src/Kernel/ReadinessValidation/PackageManagerReadinessChecksTest.php @@ -52,6 +52,7 @@ class PackageManagerReadinessChecksTest extends AutomaticUpdatesKernelTestBase { 'Composer settings validator' => ['package_manager.validator.composer_settings'], 'Multisite validator' => ['package_manager.validator.multisite'], 'Symlink validator' => ['package_manager.validator.symlink'], + 'Settings validator' => ['package_manager.validator.settings'], ]; }