Issue #2679008 by webflo, stBorchert, clemens.tolboom, gilesmc, dawehner: Module weight is not taken into account after module installation

8.4.x
Nathaniel Catchpole 2017-06-29 13:02:56 +01:00
parent 31a3fe830c
commit 8a016678c7
5 changed files with 53 additions and 0 deletions

View File

@ -136,6 +136,10 @@ class ModuleInstaller implements ModuleInstallerInterface {
throw new ExtensionNameLengthException("Module name '$module' is over the maximum allowed length of " . DRUPAL_EXTENSION_NAME_MAX_LENGTH . ' characters');
}
// Load a new config object for each iteration, otherwise changes made
// in hook_install() are not reflected in $extension_config.
$extension_config = \Drupal::configFactory()->getEditable('core.extension');
// Check the validity of the default configuration. This will throw
// exceptions if the configuration is not valid.
$config_installer->checkConfigurationToInstall('module', $module);

View File

@ -0,0 +1,14 @@
<?php
/**
* @file
* Install, update and uninstall functions for the module_handler_test_multiple module.
*/
/**
* Implements hook_install().
*/
function module_handler_test_multiple_install() {
// Set weight of module.
module_set_weight('module_handler_test_multiple', 1);
}

View File

@ -5,3 +5,5 @@ package: Testing
version: VERSION
core: 8.x
hidden: true
dependencies:
- module_handler_test_multiple

View File

@ -0,0 +1,17 @@
<?php
/**
* @file
* Utility functions for the module_handler_test_multiple_child module.
*
* Install, update and uninstall functions for the
* module_handler_test_multiple_child module.
*/
/**
* Implements hook_install().
*/
function module_handler_test_multiple_child_install() {
// Set weight of module.
module_set_weight('module_handler_test_multiple_child', 1);
}

View File

@ -44,4 +44,20 @@ class ModuleInstallerTest extends KernelTestBase {
$this->container->get('router.route_provider')->getRouteByName('router_test.1');
}
/**
* Tests config changes by hook_install() are saved for dependent modules.
*
* @covers ::install
*/
public function testConfigChangeOnInstall() {
// Install the child module so the parent is installed automatically.
$this->container->get('module_installer')->install(['module_handler_test_multiple_child']);
$modules = $this->config('core.extension')->get('module');
$this->assertArrayHasKey('module_handler_test_multiple', $modules, 'Module module_handler_test_multiple is installed');
$this->assertArrayHasKey('module_handler_test_multiple_child', $modules, 'Module module_handler_test_multiple_child is installed');
$this->assertEquals(1, $modules['module_handler_test_multiple'], 'Weight of module_handler_test_multiple is set.');
$this->assertEquals(1, $modules['module_handler_test_multiple_child'], 'Weight of module_handler_test_multiple_child is set.');
}
}