diff --git a/core/includes/config.inc b/core/includes/config.inc index c89537d..a0653c2 100644 --- a/core/includes/config.inc +++ b/core/includes/config.inc @@ -24,23 +24,17 @@ * The name of the module or theme to install default configuration for. */ function config_install_default_config($type, $name) { + // If this module defines any ConfigEntity types then create an empty + // manifest file for each of them. + foreach (config_get_module_config_entities($name) as $entity_info) { + config('manifest.' . $entity_info['config_prefix'])->save(); + } + $config_dir = drupal_get_path($type, $name) . '/config'; if (is_dir($config_dir)) { $source_storage = new FileStorage($config_dir); $target_storage = drupal_container()->get('config.storage'); - // If this module defines any ConfigEntity types, then create a manifest file - // for each of them with a listing of the objects it maintains. - foreach (config_get_module_config_entities($name) as $entity_type => $entity_info) { - $manifest_config = config('manifest.' . $entity_info['config_prefix']); - $manifest_data = array(); - foreach ($source_storage->listAll($entity_info['config_prefix']) as $config_name) { - list(, , $id) = explode('.', $config_name); - $manifest_data[$id]['name'] = $config_name; - } - $manifest_config->setData($manifest_data)->save(); - } - $config_changes = array( 'delete' => array(), 'create' => array(), diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php index b549119..2842446 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php @@ -35,6 +35,13 @@ function setUp() { function testModuleInstallation() { $default_config = 'config_test.system'; $default_configuration_entity = 'config_test.dynamic.default'; + $default_config_manifest = 'manifest.config_test.dynamic'; + $expected_manifest_data = array( + 'default' => array( + 'name' => 'config_test.dynamic.default', + ), + ); + $default_empty_config_manifest = 'manifest.config_test.empty_manifest'; // Verify that default module config does not exist before installation yet. $config = config($default_config); @@ -42,6 +49,12 @@ function testModuleInstallation() { $config = config($default_configuration_entity); $this->assertIdentical($config->isNew(), TRUE); + // Verify that configuration entity manifests do not exist. + $config = config($default_config_manifest); + $this->assertIdentical($config->isNew(), TRUE); + $config = config($default_empty_config_manifest); + $this->assertIdentical($config->isNew(), TRUE); + // Install the test module. $this->enableModules(array('config_test')); @@ -51,6 +64,13 @@ function testModuleInstallation() { $config = config($default_configuration_entity); $this->assertIdentical($config->isNew(), FALSE); + // Verify that configuration entity manifests have been created with + // expected contents. + $config = config($default_config_manifest); + $this->assertIdentical($config->get(), $expected_manifest_data); + $config = config($default_empty_config_manifest); + $this->assertIdentical($config->get(), array()); + // Verify that configuration import callback was invoked for the dynamic // configuration entity. $this->assertTrue($GLOBALS['hook_config_import']); diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php new file mode 100644 index 0000000..673d36c --- /dev/null +++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php @@ -0,0 +1,53 @@ +