merged branch aerialls/fs_exists (PR #4586)
Commits -------38cad9d
[Filesystem] added exists method Discussion ---------- [Filesystem] added exists method Bug fix: no Feature addition: yes Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: Todo: License of the code: MIT Documentation PR: --------------------------------------------------------------------------- by travisbot at 2012-06-15T16:29:20Z This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1629204) (merged ebd1a4c6 intof881d282
). --------------------------------------------------------------------------- by sstok at 2012-06-16T09:05:48Z Shouldn't it be better to stop on the first failure? as all the others files will be false automatically. --------------------------------------------------------------------------- by stof at 2012-06-16T10:21:49Z indeed. We should avoid unnecessary filesystem IO by returning false as soon as it is known --------------------------------------------------------------------------- by aerialls at 2012-06-16T11:55:24Z Indeed it's better this way. fixed! --------------------------------------------------------------------------- by travisbot at 2012-06-16T12:01:16Z This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1634615) (merged 8d98f417 into76b2ed46
).
This commit is contained in:
commit
bc147d3492
@ -66,6 +66,24 @@ class Filesystem
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the existence of files or directories.
|
||||||
|
*
|
||||||
|
* @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to check
|
||||||
|
*
|
||||||
|
* @return Boolean true if the file exists, false otherwise
|
||||||
|
*/
|
||||||
|
public function exists($files)
|
||||||
|
{
|
||||||
|
foreach ($this->toIterator($files) as $file) {
|
||||||
|
if (!file_exists($file)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates empty files.
|
* Creates empty files.
|
||||||
*
|
*
|
||||||
|
@ -313,6 +313,56 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue(!is_dir($basePath));
|
$this->assertTrue(!is_dir($basePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFilesExists()
|
||||||
|
{
|
||||||
|
$basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
mkdir($basePath);
|
||||||
|
touch($basePath.'file1');
|
||||||
|
mkdir($basePath.'folder');
|
||||||
|
|
||||||
|
$this->assertTrue($this->filesystem->exists($basePath.'file1'));
|
||||||
|
$this->assertTrue($this->filesystem->exists($basePath.'folder'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFilesExistsTraversableObjectOfFilesAndDirectories()
|
||||||
|
{
|
||||||
|
$basePath = $this->workspace.DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
mkdir($basePath.'dir');
|
||||||
|
touch($basePath.'file');
|
||||||
|
|
||||||
|
$files = new \ArrayObject(array(
|
||||||
|
$basePath.'dir', $basePath.'file'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertTrue($this->filesystem->exists($files));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFilesNotExistsTraversableObjectOfFilesAndDirectories()
|
||||||
|
{
|
||||||
|
$basePath = $this->workspace.DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
mkdir($basePath.'dir');
|
||||||
|
touch($basePath.'file');
|
||||||
|
touch($basePath.'file2');
|
||||||
|
|
||||||
|
$files = new \ArrayObject(array(
|
||||||
|
$basePath.'dir', $basePath.'file', $basePath.'file2'
|
||||||
|
));
|
||||||
|
|
||||||
|
unlink($basePath.'file');
|
||||||
|
|
||||||
|
$this->assertFalse($this->filesystem->exists($files));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInvalidFileNotExists()
|
||||||
|
{
|
||||||
|
$basePath = $this->workspace.DIRECTORY_SEPARATOR.'directory'.DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
$this->assertFalse($this->filesystem->exists($basePath.time()));
|
||||||
|
}
|
||||||
|
|
||||||
public function testChmodChangesFileMode()
|
public function testChmodChangesFileMode()
|
||||||
{
|
{
|
||||||
$this->markAsSkippedIfChmodIsMissing();
|
$this->markAsSkippedIfChmodIsMissing();
|
||||||
|
Reference in New Issue
Block a user