diff --git a/core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php b/core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php index d91085a0e68a964474371d3ecc663eb99f760aa5..948e9d8152250e9f19645fed9400849867c7c0b4 100644 --- a/core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php +++ b/core/lib/Drupal/Core/Extension/ModuleDependencyMessageTrait.php @@ -44,7 +44,7 @@ public function checkDependencyMessage(array $modules, $dependency, Dependency $ $constraint_string = $dependency_object->getConstraintString(); return $this->t('@module_name (<span class="admin-missing">incompatible with</span> version @version)', [ '@module_name' => "$module_name ($constraint_string)", - '@version' => $modules[$dependency]->info['version'], + '@version' => $modules[$dependency]->info['version'] ?? '* ? *', ]); } } diff --git a/core/modules/system/tests/src/Functional/Module/DependencyTest.php b/core/modules/system/tests/src/Functional/Module/DependencyTest.php index ebf0b7dd8c66738d919a409dc8d8f4549a0bc193..fd3aa176f8da59f6ce112a248d6d40e7a3dbc628 100644 --- a/core/modules/system/tests/src/Functional/Module/DependencyTest.php +++ b/core/modules/system/tests/src/Functional/Module/DependencyTest.php @@ -112,16 +112,36 @@ public function testNoVersionInfo() { mkdir($path, 0777, TRUE); file_put_contents("$path/system_no_module_version_dependency_test.info.yml", Yaml::encode($info)); + // Include a version in the dependency definition, to test the 'incompatible + // with version' message when no version is given in the required module. $info = [ 'type' => 'module', 'core_version_requirement' => '*', 'name' => 'System no module version test', - 'dependencies' => ['system_no_module_version_dependency_test'], + 'dependencies' => ['system_no_module_version_dependency_test(>1.x)'], ]; $path = $this->siteDirectory . '/modules/system_no_module_version_test'; mkdir($path, 0777, TRUE); file_put_contents("$path/system_no_module_version_test.info.yml", Yaml::encode($info)); + // Ensure that the module list page is displayed without errors. + $this->drupalGet('admin/modules'); + $this->assertSession()->pageTextContains('System no module version test'); + $this->assertSession()->pageTextContains('System no module version dependency test (>1.x) (incompatible with version'); + $this->assertSession()->fieldEnabled('modules[system_no_module_version_dependency_test][enable]'); + $this->assertSession()->fieldDisabled('modules[system_no_module_version_test][enable]'); + + // Remove the version requirement from the the dependency definition + $info = [ + 'type' => 'module', + 'core_version_requirement' => '*', + 'name' => 'System no module version test', + 'dependencies' => ['system_no_module_version_dependency_test'], + ]; + + $path = $this->siteDirectory . '/modules/system_no_module_version_test'; + file_put_contents("$path/system_no_module_version_test.info.yml", Yaml::encode($info)); + $this->drupalGet('admin/modules'); $this->assertSession()->pageTextContains('System no module version dependency test'); $this->assertSession()->pageTextContains('System no module version test');