diff --git a/lib/Cake/Test/Case/Utility/FolderTest.php b/lib/Cake/Test/Case/Utility/FolderTest.php index 5bf9fd840ff..f9c35f718ad 100644 --- a/lib/Cake/Test/Case/Utility/FolderTest.php +++ b/lib/Cake/Test/Case/Utility/FolderTest.php @@ -345,11 +345,24 @@ public function testZeroAsDirectory() { * @return void */ public function testAddPathElement() { + $expected = DS . 'some' . DS . 'dir' . DS . 'another_path'; + $result = Folder::addPathElement(DS . 'some' . DS . 'dir', 'another_path'); - $this->assertEquals(DS . 'some' . DS . 'dir' . DS . 'another_path', $result); + $this->assertEquals($expected, $result); $result = Folder::addPathElement(DS . 'some' . DS . 'dir' . DS, 'another_path'); - $this->assertEquals(DS . 'some' . DS . 'dir' . DS . 'another_path', $result); + $this->assertEquals($expected, $result); + + $result = Folder::addPathElement(DS . 'some' . DS . 'dir', array('another_path')); + $this->assertEquals($expected, $result); + + $result = Folder::addPathElement(DS . 'some' . DS . 'dir' . DS, array('another_path')); + $this->assertEquals($expected, $result); + + $expected = DS . 'some' . DS . 'dir' . DS . 'another_path' . DS . 'and' . DS . 'another'; + + $result = Folder::addPathElement(DS . 'some' . DS . 'dir', array('another_path', 'and', 'another')); + $this->assertEquals($expected, $result); } /** diff --git a/lib/Cake/Utility/Folder.php b/lib/Cake/Utility/Folder.php index ca6c4128d15..4e47bff1318 100644 --- a/lib/Cake/Utility/Folder.php +++ b/lib/Cake/Utility/Folder.php @@ -321,12 +321,14 @@ public static function slashTerm($path) { * Returns $path with $element added, with correct slash in-between. * * @param string $path Path - * @param string $element Element to and at end of path + * @param string|array $element Element to add at end of path * @return string Combined path * @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#Folder::addPathElement */ public static function addPathElement($path, $element) { - return rtrim($path, DS) . DS . $element; + $element = (array)$element; + array_unshift($element, rtrim($path, DS)); + return implode(DS, $element) } /**