Making Configure::load merge by default. Adding a test case for overwriting. Fixes #1618

This commit is contained in:
mark_story 2011-04-02 10:00:59 -04:00
parent dd245747e8
commit f4d8a7eff1
2 changed files with 30 additions and 9 deletions

View file

@ -272,9 +272,9 @@ class Configure {
* Loads stored configuration information from a resource. You can add
* config file resource readers with `Configure::config()`.
*
* Loaded configuration infomration will be merged with the current
* Loaded configuration information will be merged with the current
* runtime configuration. You can load configuration files from plugins
* by preceeding the filename with the plugin name.
* by preceding the filename with the plugin name.
*
* `Configure::load('Users.user', 'default')`
*
@ -285,12 +285,12 @@ class Configure {
*
* @link http://book.cakephp.org/view/929/load
* @param string $key name of configuration resource to load.
* @param string $config Name of the configured reader to use to read the resource identfied by $key.
* @param string $config Name of the configured reader to use to read the resource identified by $key.
* @param boolean $merge if config files should be merged instead of simply overridden
* @return mixed false if file not found, void if load successful.
* @throws ConfigureException Will throw any exceptions the reader raises.
*/
public static function load($key, $config = 'default', $merge = false) {
public static function load($key, $config = 'default', $merge = true) {
if (!isset(self::$_readers[$config])) {
return false;
}

View file

@ -193,26 +193,47 @@ class ConfigureTest extends CakeTestCase {
}
/**
* test load
* test load with merging
*
* @return void
*/
function testLoad() {
function testLoadWithMerge() {
Configure::config('test', new PhpReader(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'config' . DS));
$result = Configure::load('var_test', 'test');
$this->assertTrue($result);
$this->assertEquals('value', Configure::read('Read'));
$result = Configure::load('var_test2', 'test', true);
$this->assertTrue($result);
$this->assertEquals('value2', Configure::read('Read'));
$this->assertEquals('buried2', Configure::read('Deep.Second.SecondDeepest'));
$this->assertEquals('buried', Configure::read('Deep.Deeper.Deepest'));
}
/**
* test loading with overwrite
*
* @return void
*/
function testLoadNoMerge() {
Configure::config('test', new PhpReader(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'config' . DS));
$result = Configure::load('var_test', 'test');
$this->assertTrue($result);
$this->assertEquals('value', Configure::read('Read'));
$result = Configure::load('var_test2', 'test', false);
$this->assertTrue($result);
$this->assertEquals('value2', Configure::read('Read'));
$this->assertEquals('buried2', Configure::read('Deep.Second.SecondDeepest'));
$this->assertNull(Configure::read('Deep.Deeper.Deepest'));
}
/**
* testLoad method
*