diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-03-19 19:07:11 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-03-19 19:07:11 +0100 |
commit | 66bc0f0848846bce3680b79da4209d42620f1b8d (patch) | |
tree | a40ca59c2f0fffe79f6ca9e014eb129c2473e3d6 | |
parent | 6252c248c23661beef6484cf1ffa24db406e28ae (diff) | |
download | nextcloud-server-66bc0f0848846bce3680b79da4209d42620f1b8d.tar.gz nextcloud-server-66bc0f0848846bce3680b79da4209d42620f1b8d.zip |
Still return quota value when free space is unknown
Fixed the quota storage wrapper to correctly return the quota value when
the free space is not known (which usually happens when the disk_free_space
function is disabled)
-rw-r--r-- | lib/private/files/storage/wrapper/quota.php | 9 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/quota.php | 18 |
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/private/files/storage/wrapper/quota.php b/lib/private/files/storage/wrapper/quota.php index 32ceba8b196..a878b2c5cf6 100644 --- a/lib/private/files/storage/wrapper/quota.php +++ b/lib/private/files/storage/wrapper/quota.php @@ -69,7 +69,14 @@ class Quota extends Wrapper { return \OC\Files\SPACE_NOT_COMPUTED; } else { $free = $this->storage->free_space($path); - return min($free, (max($this->quota - $used, 0))); + $quotaFree = max($this->quota - $used, 0); + // if free space is known + if ($free >= 0) { + $free = min($free, $quotaFree); + } else { + $free = $quotaFree; + } + return $free; } } } diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php index bd2c69a7396..777529fd85e 100644 --- a/tests/lib/files/storage/wrapper/quota.php +++ b/tests/lib/files/storage/wrapper/quota.php @@ -61,6 +61,24 @@ class Quota extends \Test\Files\Storage\Storage { $this->assertEquals(6, $instance->free_space('')); } + public function testFreeSpaceWithUnknownDiskSpace() { + $storage = $this->getMock( + '\OC\Files\Storage\Local', + array('free_space'), + array(array('datadir' => $this->tmpDir)) + ); + $storage->expects($this->any()) + ->method('free_space') + ->will($this->returnValue(-2)); + $storage->getScanner()->scan(''); + + $instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 9)); + $instance->getCache()->put( + '', array('size' => 3, 'unencrypted_size' => 0) + ); + $this->assertEquals(6, $instance->free_space('')); + } + public function testFreeSpaceWithUsedSpaceAndEncryption() { $instance = $this->getLimitedStorage(9); $instance->getCache()->put( |