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 * @return void
*/ */
public function testNestInvalid() { public function testNestInvalid() {
@ -2291,8 +2292,7 @@ class HashTest extends CakeTestCase {
) )
) )
); );
$result = Hash::nest($input); Hash::nest($input);
$this->assertSame(array(), $result);
} }
/** /**

View file

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