From 4a71ccf6cdd9d3e8a8bda4f3d2328e689cda7f88 Mon Sep 17 00:00:00 2001 From: "yash.rode" <yash.rode@3685174.no-reply.drupal.org> Date: Thu, 13 Oct 2022 14:28:47 +0000 Subject: [PATCH] Issue #3314803 by yash.rode: Move ReadinessTrait::getOverallSeverity() into ValidationResult --- .../src/Form/UpdateReady.php | 2 +- .../src/Form/UpdaterForm.php | 3 ++- package_manager/src/ValidationResult.php | 20 +++++++++++++++++ .../tests/src/Unit/ValidationResultTest.php | 21 ++++++++++++++++++ src/Form/UpdateReady.php | 2 +- src/Form/UpdaterForm.php | 2 +- src/Validation/ReadinessTrait.php | 22 +------------------ tests/src/Kernel/ReadinessTraitTest.php | 21 ------------------ 8 files changed, 47 insertions(+), 46 deletions(-) diff --git a/automatic_updates_extensions/src/Form/UpdateReady.php b/automatic_updates_extensions/src/Form/UpdateReady.php index 9613500f15..6a5d072c85 100644 --- a/automatic_updates_extensions/src/Form/UpdateReady.php +++ b/automatic_updates_extensions/src/Form/UpdateReady.php @@ -179,7 +179,7 @@ final class UpdateReady extends FormBase { $this->displayResults($results, $this->messenger(), $this->renderer); // If any errors occurred, return the form early so the user cannot // continue. - if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) { + if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) { return $form; } } diff --git a/automatic_updates_extensions/src/Form/UpdaterForm.php b/automatic_updates_extensions/src/Form/UpdaterForm.php index ffc0f9281f..48d384629c 100644 --- a/automatic_updates_extensions/src/Form/UpdaterForm.php +++ b/automatic_updates_extensions/src/Form/UpdaterForm.php @@ -16,6 +16,7 @@ use Drupal\Core\Url; use Drupal\package_manager\Exception\ApplyFailedException; use Drupal\package_manager\FailureMarker; use Drupal\package_manager\ProjectInfo; +use Drupal\package_manager\ValidationResult; use Drupal\system\SystemManager; use Drupal\update\UpdateManagerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -170,7 +171,7 @@ final class UpdaterForm extends FormBase { $results = $event->getResults(); } $this->displayResults($results, $this->messenger(), $this->renderer); - $security_level = $this->getOverallSeverity($results); + $security_level = ValidationResult::getOverallSeverity($results); if ($update_projects && $security_level !== SystemManager::REQUIREMENT_ERROR) { $form['actions'] = $this->actions($form_state); diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php index f5c9b51c02..b7a5ce8a14 100644 --- a/package_manager/src/ValidationResult.php +++ b/package_manager/src/ValidationResult.php @@ -113,4 +113,24 @@ final class ValidationResult { return $this->severity; } + /** + * Returns the overall severity for a set of validation results. + * + * @param \Drupal\package_manager\ValidationResult[] $results + * The validation results. + * + * @return int + * The overall severity of the results. Will be be one of the + * SystemManager::REQUIREMENT_* constants. + */ + public static function getOverallSeverity(array $results): int { + foreach ($results as $result) { + if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) { + return SystemManager::REQUIREMENT_ERROR; + } + } + // If there were no errors, then any remaining results must be warnings. + return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK; + } + } diff --git a/package_manager/tests/src/Unit/ValidationResultTest.php b/package_manager/tests/src/Unit/ValidationResultTest.php index 67f08161fb..3ae93eacc8 100644 --- a/package_manager/tests/src/Unit/ValidationResultTest.php +++ b/package_manager/tests/src/Unit/ValidationResultTest.php @@ -25,6 +25,27 @@ class ValidationResultTest extends UnitTestCase { $this->assertResultValid($result, $messages, $summary, SystemManager::REQUIREMENT_WARNING); } + /** + * @covers ::getOverallSeverity + */ + public function testOverallSeverity(): void { + // An error and a warning should be counted as an error. + $results = [ + ValidationResult::createError(['Boo!']), + ValidationResult::createWarning(['Moo!']), + ]; + $this->assertSame(SystemManager::REQUIREMENT_ERROR, ValidationResult::getOverallSeverity($results)); + + // If there are no results, but no errors, the results should be counted as + // a warning. + array_shift($results); + $this->assertSame(SystemManager::REQUIREMENT_WARNING, ValidationResult::getOverallSeverity($results)); + + // If there are just plain no results, we should get REQUIREMENT_OK. + array_shift($results); + $this->assertSame(SystemManager::REQUIREMENT_OK, ValidationResult::getOverallSeverity($results)); + } + /** * @covers ::createError * diff --git a/src/Form/UpdateReady.php b/src/Form/UpdateReady.php index 2923d72ce1..d8df87994e 100644 --- a/src/Form/UpdateReady.php +++ b/src/Form/UpdateReady.php @@ -226,7 +226,7 @@ final class UpdateReady extends FormBase { $this->displayResults($results, $this->messenger(), $this->renderer); // If any errors occurred, return the form early so the user cannot // continue. - if ($this->getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) { + if (ValidationResult::getOverallSeverity($results) === SystemManager::REQUIREMENT_ERROR) { return $form; } } diff --git a/src/Form/UpdaterForm.php b/src/Form/UpdaterForm.php index 1a07169d11..b169e475a2 100644 --- a/src/Form/UpdaterForm.php +++ b/src/Form/UpdaterForm.php @@ -245,7 +245,7 @@ final class UpdaterForm extends FormBase { $release_status = $this->t('Available update'); $type = 'update-recommended'; } - $create_update_buttons = !$stage_exists && $this->getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR; + $create_update_buttons = !$stage_exists && ValidationResult::getOverallSeverity($results) !== SystemManager::REQUIREMENT_ERROR; if ($installed_minor_release) { $installed_version = ExtensionVersion::createFromVersionString($project_info->getInstalledVersion()); $form['installed_minor'] = $this->createReleaseTable( diff --git a/src/Validation/ReadinessTrait.php b/src/Validation/ReadinessTrait.php index 53b5842b6d..92d2f4dd0a 100644 --- a/src/Validation/ReadinessTrait.php +++ b/src/Validation/ReadinessTrait.php @@ -39,26 +39,6 @@ trait ReadinessTrait { $this->t('Your site does not pass some readiness checks for automatic updates. It cannot be automatically updated until further action is performed.'); } - /** - * Returns the overall severity for a set of validation results. - * - * @param \Drupal\package_manager\ValidationResult[] $results - * The validation results. - * - * @return int - * The overall severity of the results. Will be be one of the - * SystemManager::REQUIREMENT_* constants. - */ - protected function getOverallSeverity(array $results): int { - foreach ($results as $result) { - if ($result->getSeverity() === SystemManager::REQUIREMENT_ERROR) { - return SystemManager::REQUIREMENT_ERROR; - } - } - // If there were no errors, then any remaining results must be warnings. - return $results ? SystemManager::REQUIREMENT_WARNING : SystemManager::REQUIREMENT_OK; - } - /** * Adds a set of validation results to the messages. * @@ -70,7 +50,7 @@ trait ReadinessTrait { * The renderer service. */ protected function displayResults(array $results, MessengerInterface $messenger, RendererInterface $renderer): void { - $severity = $this->getOverallSeverity($results); + $severity = ValidationResult::getOverallSeverity($results); if ($severity === SystemManager::REQUIREMENT_OK) { return; diff --git a/tests/src/Kernel/ReadinessTraitTest.php b/tests/src/Kernel/ReadinessTraitTest.php index 6fb6c3423d..ba1937f5d2 100644 --- a/tests/src/Kernel/ReadinessTraitTest.php +++ b/tests/src/Kernel/ReadinessTraitTest.php @@ -18,27 +18,6 @@ class ReadinessTraitTest extends AutomaticUpdatesKernelTestBase { use ReadinessTrait; use StringTranslationTrait; - /** - * @covers ::getOverallSeverity - */ - public function testOverallSeverity(): void { - // An error and a warning should be counted as an error. - $results = [ - ValidationResult::createError(['Boo!']), - ValidationResult::createWarning(['Moo!']), - ]; - $this->assertSame(SystemManager::REQUIREMENT_ERROR, $this->getOverallSeverity($results)); - - // If there are no results, but no errors, the results should be counted as - // a warning. - array_shift($results); - $this->assertSame(SystemManager::REQUIREMENT_WARNING, $this->getOverallSeverity($results)); - - // If there are just plain no results, we should get REQUIREMENT_OK. - array_shift($results); - $this->assertSame(SystemManager::REQUIREMENT_OK, $this->getOverallSeverity($results)); - } - /** * @covers ::displayResults */ -- GitLab