From 70876cd1fab6fdea2d3950c687b4615726899143 Mon Sep 17 00:00:00 2001 From: Yuriy Vilks Date: Thu, 21 Apr 2016 19:51:54 +0000 Subject: [PATCH] Fix directory reading. Return FALSE on directory end instead empty string for avoiding infinity readdir cycles. --- src/Stream/DirectoryHandle.php | 2 ++ .../StreamWrapper/ReadDirAcceptanceTest.php | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 test/acceptance/Stream/StreamWrapper/ReadDirAcceptanceTest.php diff --git a/src/Stream/DirectoryHandle.php b/src/Stream/DirectoryHandle.php index 94781bd..c71745b 100644 --- a/src/Stream/DirectoryHandle.php +++ b/src/Stream/DirectoryHandle.php @@ -84,6 +84,8 @@ class DirectoryHandle extends AbstractHandle return $name; } } + + return false; } public function write($content) diff --git a/test/acceptance/Stream/StreamWrapper/ReadDirAcceptanceTest.php b/test/acceptance/Stream/StreamWrapper/ReadDirAcceptanceTest.php new file mode 100644 index 0000000..b2462ce --- /dev/null +++ b/test/acceptance/Stream/StreamWrapper/ReadDirAcceptanceTest.php @@ -0,0 +1,23 @@ + [ + 'bar' => 'baz' + ] + ]; + + public function testReadDirectory() + { + $dHandler = opendir("$this->scheme:///foo"); + $expects = ['bar' => true, '.' => true, '..' => true]; + while(($file = readdir($dHandler)) !== false) { + $this->assertArrayHasKey($file, $expects); + } + } +} +