diff --git a/lib/Cake/Test/Case/Utility/FolderTest.php b/lib/Cake/Test/Case/Utility/FolderTest.php index 01bb44e0d..c84b3ba5c 100644 --- a/lib/Cake/Test/Case/Utility/FolderTest.php +++ b/lib/Cake/Test/Case/Utility/FolderTest.php @@ -26,6 +26,45 @@ App::uses('File', 'Utility'); */ class FolderTest extends CakeTestCase { + protected static $_tmp = array(); + +/** + * Save the directory names in TMP + * + * @return void + */ + public static function setUpBeforeClass() { + foreach (scandir(TMP) as $file) { + if (is_dir(TMP . $file) && !in_array($file, array('.', '..'))) { + self::$_tmp[] = $file; + } + } + } + +/** + * setUp clearstatcache() to flush file descriptors. + * + * @return void + */ + public function setUp() { + parent::setUp(); + clearstatcache(); + } + +/** + * Restore the TMP directory to its original state. + * + * @return void + */ + public function tearDown() { + $exclude = array_merge(self::$_tmp, array('.', '..')); + foreach (scandir(TMP) as $file) { + if (is_dir(TMP . $file) && !in_array($file, $exclude)) { + unlink(TMP . $file); + } + } + } + /** * testBasic method * @@ -261,7 +300,7 @@ class FolderTest extends CakeTestCase { $expected = array('0', 'cache', 'logs', 'sessions', 'tests'); $this->assertEqual($expected, $result[0]); - $result = $Folder->read(true, array('.', '..', 'logs', '.svn')); + $result = $Folder->read(true, array('logs')); $expected = array('0', 'cache', 'sessions', 'tests'); $this->assertEqual($expected, $result[0]); diff --git a/lib/Cake/Utility/Folder.php b/lib/Cake/Utility/Folder.php index 671ff1e2b..e797d4417 100644 --- a/lib/Cake/Utility/Folder.php +++ b/lib/Cake/Utility/Folder.php @@ -415,7 +415,7 @@ class Folder { } if ($item->isFile()) { $files[] = $item->getPathName(); - } else if ($item->isDir()) { + } else if ($item->isDir() && !in_array($name, array('.', '..'))) { $directories[] = $item->getPathName(); } }