diff --git a/core/modules/system/src/Form/ModulesListForm.php b/core/modules/system/src/Form/ModulesListForm.php index 7831c38a36ff3a74a7b91ac4ac300ee768a179bd..e74d898ca45e6889ecbc227be08dfd10986cf6f4 100644 --- a/core/modules/system/src/Form/ModulesListForm.php +++ b/core/modules/system/src/Form/ModulesListForm.php @@ -411,6 +411,7 @@ protected function buildModuleList(FormStateInterface $form_state) { foreach (array_keys($modules['install']) as $module) { if (!drupal_check_module($module)) { unset($modules['install'][$module]); + unset($modules['experimental'][$module]); foreach (array_keys($data[$module]->required_by) as $dependent) { unset($modules['install'][$dependent]); unset($modules['dependencies'][$dependent]); diff --git a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php b/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php index 83af4ad42109ea56126db3a5243fa1f118a94c61..7b1a376bd03043f352aa6594940fc66e6dc29132 100644 --- a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php +++ b/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php @@ -120,6 +120,14 @@ public function testExperimentalConfirmForm() { $this->drupalPostForm(NULL, [], 'Continue'); $this->assertText('2 modules have been enabled: Experimental Test, Experimental Dependency Test'); + // Try to enable an experimental module that can not be due to + // hook_requirements(). + \Drupal::state()->set('experimental_module_requirements_test_requirements', TRUE); + $edit = []; + $edit["modules[Core (Experimental)][experimental_module_requirements_test][enable]"] = TRUE; + $this->drupalPostForm('admin/modules', $edit, 'Install'); + $this->assertUrl('admin/modules', [], 'If the module can not be installed we are not taken to the confirm form.'); + $this->assertText('The Experimental Test Requirements module can not be installed.'); } } diff --git a/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.info.yml b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..8ac724b994758e21407d82d9f4697466d208fc84 --- /dev/null +++ b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.info.yml @@ -0,0 +1,6 @@ +name: 'Experimental Requirements Test' +type: module +description: 'Module in the experimental package to test hook_requirements() with an experimental module.' +package: Core (Experimental) +version: VERSION +core: 8.x diff --git a/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.install b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.install new file mode 100644 index 0000000000000000000000000000000000000000..1ee0dca7b1a591f9ed709ca1a76c4f9f974d5973 --- /dev/null +++ b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.install @@ -0,0 +1,20 @@ +get('experimental_module_requirements_test_requirements', FALSE)) { + $requirements['experimental_module_requirements_test_requirements'] = [ + 'severity' => REQUIREMENT_ERROR, + 'description' => t('The Experimental Test Requirements module can not be installed.'), + ]; + } + return $requirements; +} diff --git a/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.module b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.module new file mode 100644 index 0000000000000000000000000000000000000000..a2321aaf793a0429e3685525d3747349f5e2ad3f --- /dev/null +++ b/core/modules/system/tests/modules/experimental_module_requirements_test/experimental_module_requirements_test.module @@ -0,0 +1,18 @@ +online documentation for the Experimental Requirements Test module.', [':url' => 'http://www.example.com']); + } +}