Skip to content

Commit

Permalink
Ensure Configure::boostrap() doesn't overwrite existing configs under…
Browse files Browse the repository at this point in the history
… 'App' key.

Fixes #3874
  • Loading branch information
ADmad committed Jul 31, 2013
1 parent 6da0a37 commit b7cee8f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 11 deletions.
22 changes: 15 additions & 7 deletions lib/Cake/Core/Configure.php
Expand Up @@ -67,13 +67,7 @@ class Configure {
*/
public static function bootstrap($boot = true) {
if ($boot) {
self::write('App', array(
'base' => false,
'baseUrl' => false,
'dir' => APP_DIR,
'webroot' => WEBROOT_DIR,
'www_root' => WWW_ROOT
));
self::_appDefaults();

if (!include APP . 'Config' . DS . 'core.php') {
trigger_error(__d('cake_dev', "Can't find application core file. Please create %score.php, and make sure it is readable by PHP.", APP . 'Config' . DS), E_USER_ERROR);
Expand Down Expand Up @@ -109,6 +103,20 @@ class_exists('String');
}
}

/**
* Set app's default configs
* @return void
*/
protected static function _appDefaults() {
self::write('App', (array)self::read('App') + array(
'base' => false,
'baseUrl' => false,
'dir' => APP_DIR,
'webroot' => WEBROOT_DIR,
'www_root' => WWW_ROOT
));
}

/**
* Used to store a dynamic variable in Configure.
*
Expand Down
17 changes: 17 additions & 0 deletions lib/Cake/Test/Case/Core/ConfigureTest.php
Expand Up @@ -69,6 +69,23 @@ public function tearDown() {
Configure::drop('test');
}

/**
* Test to ensure bootrapping doesn't overwrite prior configs set under 'App' key
* @return void
*/
public function testBootstrap() {
$expected = array(
'foo' => 'bar'
);
Configure::write('App', $expected);

Configure::bootstrap(true);
$result = Configure::read('App');

$this->assertEquals($expected['foo'], $result['foo']);
$this->assertFalse($result['base']);
}

/**
* testRead method
*
Expand Down
8 changes: 4 additions & 4 deletions lib/Cake/bootstrap.php
Expand Up @@ -150,10 +150,6 @@
App::uses('Object', 'Core');
App::uses('Multibyte', 'I18n');

App::$bootstrapping = true;

Configure::bootstrap(isset($boot) ? $boot : true);

/**
* Full URL prefix
*/
Expand All @@ -172,6 +168,10 @@
unset($httpHost, $s);
}

App::$bootstrapping = true;

Configure::bootstrap(isset($boot) ? $boot : true);

if (function_exists('mb_internal_encoding')) {
$encoding = Configure::read('App.encoding');
if (!empty($encoding)) {
Expand Down

0 comments on commit b7cee8f

Please sign in to comment.