Fixed issue where incorrect cached filesize was reported when appending to file.

This commit is contained in:
ADmad 2013-04-13 19:45:20 +05:30
parent ed435870ae
commit ba56fb7064
2 changed files with 14 additions and 3 deletions

View file

@ -433,16 +433,24 @@ class FileTest extends CakeTestCase {
$TmpFile = new File($tmpFile);
$this->assertFalse(file_exists($tmpFile));
$fragments = array('CakePHP\'s', ' test suite', ' was here ...', '');
$fragments = array('CakePHP\'s', ' test suite', ' was here ...');
$data = null;
$size = 0;
foreach ($fragments as $fragment) {
$r = $TmpFile->append($fragment);
$this->assertTrue($r);
$this->assertTrue(file_exists($tmpFile));
$data = $data . $fragment;
$this->assertEquals($data, file_get_contents($tmpFile));
$newSize = $TmpFile->size();
$this->assertTrue($newSize > $size);
$size = $newSize;
$TmpFile->close();
}
$TmpFile->append('');
$this->assertEquals($data, file_get_contents($tmpFile));
$TmpFile->close();
}
/**

View file

@ -130,7 +130,6 @@ class File {
if (!$force && is_resource($this->handle)) {
return true;
}
clearstatcache();
if ($this->exists() === false) {
if ($this->create() === false) {
return false;
@ -278,7 +277,6 @@ class File {
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#File::delete
*/
public function delete() {
clearstatcache();
if (is_resource($this->handle)) {
fclose($this->handle);
$this->handle = null;
@ -410,6 +408,11 @@ class File {
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#File::exists
*/
public function exists() {
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
clearstatcache(true, $this->path);
} else {
clearstatcache();
}
return (file_exists($this->path) && is_file($this->path));
}