From cfb1b5989e87d3f8abccadda64505e3465018be7 Mon Sep 17 00:00:00 2001 From: webchick Date: Fri, 1 Feb 2013 19:44:13 -0800 Subject: [PATCH] Issue #1889752 by alexpott: Fixed Remove unnecessary manifest creation in config_install_default_config(). --- core/includes/config.inc | 18 +++---- .../Drupal/config/Tests/ConfigInstallTest.php | 20 +++++++ .../Core/Entity/ConfigTestEmptyManifest.php | 53 +++++++++++++++++++ .../system/Tests/Database/RegressionTest.php | 7 --- 4 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php diff --git a/core/includes/config.inc b/core/includes/config.inc index ce6f0b795fd..b4a06669d15 100644 --- a/core/includes/config.inc +++ b/core/includes/config.inc @@ -24,23 +24,17 @@ const CONFIG_IMPORT_LOCK = 'config_import'; * 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 b5491195f64..28424462d46 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 @@ class ConfigInstallTest extends DrupalUnitTestBase { 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 @@ class ConfigInstallTest extends DrupalUnitTestBase { $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 @@ class ConfigInstallTest extends DrupalUnitTestBase { $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 00000000000..673d36ce50a --- /dev/null +++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php @@ -0,0 +1,53 @@ + 'Regression tests',