diff --git a/automatic_updates_extensions/src/Form/UpdateReady.php b/automatic_updates_extensions/src/Form/UpdateReady.php index 9613500f1594b95b44c4334addbce313352d16e3..6a5d072c85b2f3de5cc4c6c727ec4dc1d462556b 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 ffc0f9281f025e9bd03c32a5e10ff009e28ac8dd..48d384629cc2fa5e1d7be5c900898d996185fb66 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 f5c9b51c023b7eef24dc2e2ec2839ac035339b8c..b7a5ce8a14820a4ce8e59e480ac39d7173b4164d 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 67f08161fb7810beb89a1bbe669bed426a96513d..3ae93eacc8575f292d7c84f44513ad03e5de1e8d 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 2923d72ce18791d016067a63ee5ef0913dbd7a80..d8df87994eb63a9297877decdaf9b195e9dd2346 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 1a07169d11a4bbba46919c5d423cb8ab399af149..b169e475a2bcb54043ea1e18510fc3b760ad0c40 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 53b5842b6dd0813ae3cbf16f006f6b32b151d606..92d2f4dd0a906dd811d7425519b94f49c63bf80a 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 6fb6c3423dab5bebbcaebb69261f0a0db618fb8b..ba1937f5d20da0cec4001d2db9e8e828160d5a9f 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 */