diff --git a/core/includes/install.inc b/core/includes/install.inc index 31d472a..b9545c0 100644 --- a/core/includes/install.inc +++ b/core/includes/install.inc @@ -979,10 +979,24 @@ function drupal_check_module($module) { // Print any error messages foreach ($requirements as $requirement) { if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) { - $message = $requirement['description']; + $message = []; + if (is_array($requirement['description'])) { + $message['description'] = $requirement['description']; + } + else { + $message['description'] = [ + '#markup' => $requirement['description'], + '#suffix' => ' ', + ]; + } if (isset($requirement['value']) && $requirement['value']) { - $message = t('@requirements_message (Currently using @item version @version)', array('@requirements_message' => $requirement['description'], '@item' => $requirement['title'], '@version' => $requirement['value'])); + $message['version'] = [ + '#prefix' => '(', + '#markup' => t('Currently using @item version @version', array('@item' => $requirement['title'], '@version' => $requirement['value'])), + '#suffix' => ')', + ]; } + \Drupal::service('renderer')->renderPlain($message); drupal_set_message($message, 'error'); } } diff --git a/core/modules/system/src/Tests/Module/DependencyTest.php b/core/modules/system/src/Tests/Module/DependencyTest.php index e9162a8..8f56a7e 100644 --- a/core/modules/system/src/Tests/Module/DependencyTest.php +++ b/core/modules/system/src/Tests/Module/DependencyTest.php @@ -104,7 +104,11 @@ function testEnableRequirementsFailureDependency() { $this->assertModules(array('requirements1_test'), FALSE); $this->assertModules(array('requirements2_test'), FALSE); - // Attempt to install both modules at the same time. + // Configure requirements1_test to fail installation. + \Drupal::state()->set('requirements1_test.phase', 'install'); + \Drupal::state()->set('requirements1_test.severity', REQUIREMENT_ERROR); + + // Attempt to install both modules at the same time. $edit = array(); $edit['modules[Testing][requirements1_test][enable]'] = 'requirements1_test'; $edit['modules[Testing][requirements2_test][enable]'] = 'requirements2_test'; diff --git a/core/modules/system/src/Tests/Module/HookRequirementsTest.php b/core/modules/system/src/Tests/Module/HookRequirementsTest.php index eb4a614..016c59e 100644 --- a/core/modules/system/src/Tests/Module/HookRequirementsTest.php +++ b/core/modules/system/src/Tests/Module/HookRequirementsTest.php @@ -174,8 +174,16 @@ protected function doRuntimeTest() { * @see requirements1_test_requirements() */ protected function assertExpectedRequirementsMessages() { - // The requirement title should be displayed. - $this->assertText('Requirements 1 title'); + // @todo Currently, the 'title' is only displayed during the install phase + // if the 'value' is also defined. This may not be intentional. Fix in + // https://www.drupal.org/node/FILE-ME. + if (($this->phase == 'install') && !$this->useValue) { + $this->assertNoText('Requirements 1 title'); + } + else { + // Normally, the requirement title should always be displayed. + $this->assertText('Requirements 1 title'); + } // If the requirements description was a render array, check that it was // rendered correctly.