Skip to content

Commit

Permalink
The actual config file must always have .php extension.
Browse files Browse the repository at this point in the history
  • Loading branch information
bar committed Aug 14, 2012
1 parent 65e63c5 commit 0dec093
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
9 changes: 4 additions & 5 deletions lib/Cake/Configure/PhpReader.php
Expand Up @@ -66,22 +66,21 @@ public function read($key) {
$key = substr($key, 0, -4);
}
list($plugin, $key) = pluginSplit($key);
$key .= '.php';

if ($plugin) {
$file = App::pluginPath($plugin) . 'Config' . DS . $key;
} else {
$file = $this->_path . $key;
}
$file .= '.php';
if (!is_file($file)) {
if (!is_file(substr($file, 0, -4))) {
throw new ConfigureException(__d('cake_dev', 'Could not load configuration files: %s or %s', $file, substr($file, 0, -4)));
}
throw new ConfigureException(__d('cake_dev', 'Could not load configuration file: %s', $file));
}

include $file;
if (!isset($config)) {
throw new ConfigureException(
sprintf(__d('cake_dev', 'No variable $config found in %s.php'), $file)
sprintf(__d('cake_dev', 'No variable $config found in %s'), $file)
);
}
return $config;
Expand Down
25 changes: 18 additions & 7 deletions lib/Cake/Test/Case/Configure/PhpReaderTest.php
Expand Up @@ -41,7 +41,7 @@ class PhpReaderTest extends CakeTestCase {
);

/**
* setup
* Setup.
*
* @return void
*/
Expand All @@ -51,7 +51,7 @@ public function setUp() {
}

/**
* test reading files
* Test reading files.
*
* @return void
*/
Expand All @@ -65,21 +65,32 @@ public function testRead() {
$this->assertEquals('value', $values['Read']);
}

/**
* Test an exception is thrown by reading files that exist without .php extension.
*
* @expectedException ConfigureException
* @return void
*/
public function testReadWithExistentFileWithoutExtension() {
$reader = new PhpReader($this->path);
$reader->read('no_php_extension');
}

/**
* Test an exception is thrown by reading files that don't exist.
*
* @expectedException ConfigureException
* @return void
*/
public function testReadWithNonExistantFile() {
public function testReadWithNonExistentFile() {
$reader = new PhpReader($this->path);
$reader->read('fake_values');
}

/**
* test reading an empty file.
* Test reading an empty file.
*
* @expectedException RuntimeException
* @expectedException ConfigureException
* @return void
*/
public function testReadEmptyFile() {
Expand All @@ -88,7 +99,7 @@ public function testReadEmptyFile() {
}

/**
* test reading keys with ../ doesn't work
* Test reading keys with ../ doesn't work.
*
* @expectedException ConfigureException
* @return void
Expand All @@ -99,7 +110,7 @@ public function testReadWithDots() {
}

/**
* test reading from plugins
* Test reading from plugins.
*
* @return void
*/
Expand Down
9 changes: 9 additions & 0 deletions lib/Cake/Test/test_app/Config/no_php_extension
@@ -0,0 +1,9 @@
<?php
// Test file for testing config file without .php extension.
$config = array(
'Deep' => array(
'Third' => array(
'ThirdDeepest' => 'buried3'
)
)
);

0 comments on commit 0dec093

Please sign in to comment.