Merge pull request #6838 from owncloud/core-quotawrapperfailedfopenfix
Fixed quota wrapper to not wrap failed fopen streams
This commit is contained in:
commit
62dd58aa19
|
@ -95,7 +95,7 @@ class Quota extends Wrapper {
|
||||||
public function fopen($path, $mode) {
|
public function fopen($path, $mode) {
|
||||||
$source = $this->storage->fopen($path, $mode);
|
$source = $this->storage->fopen($path, $mode);
|
||||||
$free = $this->free_space('');
|
$free = $this->free_space('');
|
||||||
if ($free >= 0 && $mode !== 'r') {
|
if ($source && $free >= 0 && $mode !== 'r' && $mode !== 'rb') {
|
||||||
return \OC\Files\Stream\Quota::wrap($source, $free);
|
return \OC\Files\Stream\Quota::wrap($source, $free);
|
||||||
} else {
|
} else {
|
||||||
return $source;
|
return $source;
|
||||||
|
|
|
@ -59,6 +59,20 @@ class Quota extends \Test\Files\Storage\Storage {
|
||||||
$this->assertEquals('foobarqwe', $instance->file_get_contents('foo'));
|
$this->assertEquals('foobarqwe', $instance->file_get_contents('foo'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testReturnFalseWhenFopenFailed(){
|
||||||
|
$failStorage = $this->getMock(
|
||||||
|
'\OC\Files\Storage\Local',
|
||||||
|
array('fopen'),
|
||||||
|
array(array('datadir' => $this->tmpDir)));
|
||||||
|
$failStorage->expects($this->any())
|
||||||
|
->method('fopen')
|
||||||
|
->will($this->returnValue(false));
|
||||||
|
|
||||||
|
$instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $failStorage, 'quota' => 1000));
|
||||||
|
|
||||||
|
$this->assertFalse($instance->fopen('failedfopen', 'r'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testReturnRegularStreamOnRead(){
|
public function testReturnRegularStreamOnRead(){
|
||||||
$instance = $this->getLimitedStorage(9);
|
$instance = $this->getLimitedStorage(9);
|
||||||
|
|
||||||
|
@ -71,6 +85,11 @@ class Quota extends \Test\Files\Storage\Storage {
|
||||||
$meta = stream_get_meta_data($stream);
|
$meta = stream_get_meta_data($stream);
|
||||||
$this->assertEquals('plainfile', $meta['wrapper_type']);
|
$this->assertEquals('plainfile', $meta['wrapper_type']);
|
||||||
fclose($stream);
|
fclose($stream);
|
||||||
|
|
||||||
|
$stream = $instance->fopen('foo', 'rb');
|
||||||
|
$meta = stream_get_meta_data($stream);
|
||||||
|
$this->assertEquals('plainfile', $meta['wrapper_type']);
|
||||||
|
fclose($stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testReturnQuotaStreamOnWrite(){
|
public function testReturnQuotaStreamOnWrite(){
|
||||||
|
|
Loading…
Reference in New Issue