Skip to content
Snippets Groups Projects
Commit 3faf1ab3 authored by Theresa Grannum's avatar Theresa Grannum Committed by Ted Bowman
Browse files

Issue #3292956 by Theresa.Grannum: Move SettingsValidator into Package Manager

parent b946839a
No related branches found
No related tags found
No related merge requests found
......@@ -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:
......
......@@ -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 }
<?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',
];
}
......
<?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);
}
......
......@@ -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'],
];
}
......
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