Merge pull request #3906 from ravage84/hash-nest-exception

Hash::nest() should throw an exception instead of returning an empty arr...
This commit is contained in:
Mark Story 2014-07-17 09:27:38 -04:00
commit d62d6061b2
2 changed files with 10 additions and 5 deletions

View file

@ -2277,8 +2277,9 @@ class HashTest extends CakeTestCase {
}
/**
* Tests that nest() returns an empty array for invalid input instead of throwing notices.
* Tests that nest() throws an InvalidArgumentException when providing an invalid input.
*
* @expectedException InvalidArgumentException
* @return void
*/
public function testNestInvalid() {
@ -2291,8 +2292,7 @@ class HashTest extends CakeTestCase {
)
)
);
$result = Hash::nest($input);
$this->assertSame(array(), $result);
Hash::nest($input);
}
/**

View file

@ -1006,6 +1006,7 @@ class Hash {
* @param array $options Options are:
* @return array of results, nested
* @see Hash::extract()
* @throws InvalidArgumentException When providing invalid data.
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#Hash::nest
*/
public static function nest(array $data, $options = array()) {
@ -1048,10 +1049,14 @@ class Hash {
}
}
if (!$return) {
throw new InvalidArgumentException(__d('cake_dev',
'Invalid data array to nest.'
));
}
if ($options['root']) {
$root = $options['root'];
} elseif (!$return) {
return array();
} else {
$root = self::get($return[0], $parentKeys);
}