Browse Source

Merge pull request #772 from bar/master-fix-phpreader

The actual config file must always have .php extension.
Mark Story 13 years ago
parent
commit
08e4362d40

+ 4 - 5
lib/Cake/Configure/PhpReader.php

@@ -66,22 +66,21 @@ class PhpReader implements ConfigReaderInterface {
 			$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;

+ 18 - 7
lib/Cake/Test/Case/Configure/PhpReaderTest.php

@@ -41,7 +41,7 @@ class PhpReaderTest extends CakeTestCase {
 	);
 
 /**
- * setup
+ * Setup.
  *
  * @return void
  */
@@ -51,7 +51,7 @@ class PhpReaderTest extends CakeTestCase {
 	}
 
 /**
- * test reading files
+ * Test reading files.
  *
  * @return void
  */
@@ -66,20 +66,31 @@ class PhpReaderTest extends CakeTestCase {
 	}
 
 /**
+ * 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() {
@@ -88,7 +99,7 @@ class PhpReaderTest extends CakeTestCase {
 	}
 
 /**
- * test reading keys with ../ doesn't work
+ * Test reading keys with ../ doesn't work.
  *
  * @expectedException ConfigureException
  * @return void
@@ -99,7 +110,7 @@ class PhpReaderTest extends CakeTestCase {
 	}
 
 /**
- * test reading from plugins
+ * Test reading from plugins.
  *
  * @return void
  */

+ 9 - 0
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'
+		)
+	)
+);