Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fix re-numbering of values in exportVar()

Using array_merge resulted in values being re-indexed,
change how arrays are combined to preserve keys.

Fixes #2506
  • Loading branch information...
commit 29514b08fbfba9017a5b948f39f87fafdbab8192 1 parent 11ed1e6
@markstory markstory authored
View
17 lib/Cake/Test/Case/Utility/DebuggerTest.php
@@ -329,8 +329,21 @@ public function testExportVar() {
float => (float) 1.333
}
TEXT;
- // $result = str_replace(array("\r\n", "\n"), "", $result);
- // $expected = str_replace(array("\r\n", "\n"), "", $expected);
+ $result = str_replace(array("\r\n", "\n"), "", $result);
+ $expected = str_replace(array("\r\n", "\n"), "", $expected);
+ $this->assertEquals($expected, $result);
+
+ $data = array(
+ 1 => 'Index one',
+ 5 => 'Index five'
+ );
+ $result = Debugger::exportVar($data);
+ $expected = <<<TEXT
+array(
+ (int) 1 => 'Index one',
+ (int) 5 => 'Index five'
+)
+TEXT;
$this->assertEquals($expected, $result);
}
View
16 lib/Cake/Utility/Debugger.php
@@ -496,13 +496,23 @@ protected static function _export($var, $depth, $indent) {
/**
* Export an array type object. Filters out keys used in datasource configuration.
*
+ * The following keys are replaced with ***'s
+ *
+ * - password
+ * - login
+ * - host
+ * - database
+ * - port
+ * - prefix
+ * - schema
+ *
* @param array $var The array to export.
* @param integer $depth The current depth, used for recursion tracking.
* @param integer $indent The current indentation level.
* @return string Exported array.
*/
protected static function _array(array $var, $depth, $indent) {
- $var = array_merge($var, array_intersect_key(array(
+ $secrets = array(
'password' => '*****',
'login' => '*****',
'host' => '*****',
@@ -510,7 +520,9 @@ protected static function _array(array $var, $depth, $indent) {
'port' => '*****',
'prefix' => '*****',
'schema' => '*****'
- ), $var));
+ );
+ $replace = array_intersect_key($secrets, $var);
+ $var = $replace + $var;
$out = "array(";
$n = $break = $end = null;
Please sign in to comment.
Something went wrong with that request. Please try again.