From 45a45baf2f0cd4eb052640ed394a45385d3b4a8b Mon Sep 17 00:00:00 2001 From: everzet Date: Fri, 25 Nov 2011 12:11:24 +0100 Subject: [PATCH] [Config] updated DirectoryResource tests --- .../Config/Resource/DirectoryResource.php | 27 +++++------ .../Tests/Resource/DirectoryResourceTest.php | 45 +++++++++++++------ 2 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/Symfony/Component/Config/Resource/DirectoryResource.php b/src/Symfony/Component/Config/Resource/DirectoryResource.php index 10424c3c6b..b36e0372db 100644 --- a/src/Symfony/Component/Config/Resource/DirectoryResource.php +++ b/src/Symfony/Component/Config/Resource/DirectoryResource.php @@ -43,7 +43,7 @@ class DirectoryResource implements ResourceInterface, \Serializable $childs = array(); foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->resource), \RecursiveIteratorIterator::SELF_FIRST) as $file) { // if regex filtering is enabled only return matching files - if (!$this->isFileMatchesFilters($file)) { + if ($file->isFile() && !$this->isFileMatchesPattern($file)) { continue; } @@ -71,7 +71,7 @@ class DirectoryResource implements ResourceInterface, \Serializable $resources = array(); foreach ($iterator as $file) { // if regex filtering is enabled only return matching files - if (!$this->isFileMatchesFilters($file)) { + if ($file->isFile() && !$this->isFileMatchesPattern($file)) { continue; } @@ -109,6 +109,11 @@ class DirectoryResource implements ResourceInterface, \Serializable return $this->resource; } + /** + * Returns check pattern. + * + * @return mixed + */ public function getPattern() { return $this->pattern; @@ -145,7 +150,7 @@ class DirectoryResource implements ResourceInterface, \Serializable return false; } - return $this->getModificationTime() <= $timestamp; + return $this->getModificationTime() < $timestamp; } /** @@ -155,7 +160,7 @@ class DirectoryResource implements ResourceInterface, \Serializable */ public function exists() { - return file_exists($this->resource); + return is_dir($this->resource); } public function serialize() @@ -175,18 +180,10 @@ class DirectoryResource implements ResourceInterface, \Serializable * * @return Boolean */ - private function isFileMatchesFilters(\SplFileInfo $file) + private function isFileMatchesPattern(\SplFileInfo $file) { - if (isset($this->filterRegexList) && $file->isFile()) { - $regexMatched = false; - foreach ($this->filterRegexList as $regex) { - if (preg_match($regex, (string) $file)) { - $regexMatched = true; - } - } - if (!$regexMatched) { - return false; - } + if ($this->pattern) { + return preg_match($this->pattern, $file->getBasename()); } return true; diff --git a/src/Symfony/Component/Config/Tests/Resource/DirectoryResourceTest.php b/src/Symfony/Component/Config/Tests/Resource/DirectoryResourceTest.php index 3345b451a3..77967f94d2 100644 --- a/src/Symfony/Component/Config/Tests/Resource/DirectoryResourceTest.php +++ b/src/Symfony/Component/Config/Tests/Resource/DirectoryResourceTest.php @@ -118,20 +118,8 @@ class DirectoryResourceTest extends \PHPUnit_Framework_TestCase $this->assertFalse($resource->isFresh(time()), '->isFresh() returns false if the whole resource is removed'); } - /** - * @covers Symfony\Component\Config\Resource\DirectoryResource::exists - */ - public function testExists() - { - $this->assertTrue($this->resource->exists(), '->exists() returns true if the directory still exist'); - - $this->removeDirectory($this->directory); - $this->assertFalse($this->resource->exists(), '->exists() returns false if the directory does not exist'); - } - /** * @covers Symfony\Component\Config\Resource\DirectoryResource::isFresh - * @covers Symfony\Component\Config\Resource\DirectoryResource::getModificationTime */ public function testIsFreshCreateFileInSubdirectory() { @@ -161,7 +149,6 @@ class DirectoryResourceTest extends \PHPUnit_Framework_TestCase /** * @covers Symfony\Component\Config\Resource\DirectoryResource::isFresh - * @covers Symfony\Component\Config\Resource\DirectoryResource::getFilteredChilds */ public function testFilterRegexListNoMatch() { @@ -181,4 +168,36 @@ class DirectoryResourceTest extends \PHPUnit_Framework_TestCase touch($this->directory.'/new.xml', time() + 20); $this->assertFalse($resource->isFresh(time() + 10), '->isFresh() returns false if an new file matching the filter regex is created '); } + + /** + * @covers Symfony\Component\Config\Resource\DirectoryResource::exists + */ + public function testDirectoryExists() + { + $resource = new DirectoryResource($this->directory); + + $this->assertTrue($resource->exists(), '->exists() returns true if directory exists '); + + unlink($this->directory.'/tmp.xml'); + rmdir($this->directory); + + $this->assertFalse($resource->exists(), '->exists() returns false if directory does not exists'); + } + + /** + * @covers Symfony\Component\Config\Resource\DirectoryResource::getModificationTime + */ + public function testGetModificationTime() + { + $resource = new DirectoryResource($this->directory, '/\.(foo|xml)$/'); + + touch($this->directory.'/new.xml', $time = time() + 20); + $this->assertSame($time, $resource->getModificationTime(), '->getModificationTime() returns time of the last modificated resource'); + + touch($this->directory.'/some', time() + 60); + $this->assertSame($time, $resource->getModificationTime(), '->getModificationTime() returns time of last modificated resource, that only matches pattern'); + + touch($this->directory, $time2 = time() + 90); + $this->assertSame($time2, $resource->getModificationTime(), '->getModificationTime() returns modification time of the directory itself'); + } }