diff options
author | Morris Jobke <hey@morrisjobke.de> | 2019-03-08 09:12:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-08 09:12:33 +0100 |
commit | 772303309df7e85c3e3f1d5c93daf473a5d1e3ac (patch) | |
tree | 08b16f38cdea60d288ffd98d7d11f7fdb5ed7ca2 /tests | |
parent | 70aa85997d53a5a44e8e91edcb6265e085963fa1 (diff) | |
parent | d16cfb519e267c64b0ed816901b97f097576821a (diff) | |
download | nextcloud-server-772303309df7e85c3e3f1d5c93daf473a5d1e3ac.tar.gz nextcloud-server-772303309df7e85c3e3f1d5c93daf473a5d1e3ac.zip |
Merge pull request #14425 from cowai/fix-multiple-incomplete-folders
Do not calculate folder size for parent that also needs proper scan, fixes #3524
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/Files/Cache/ScannerTest.php | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/lib/Files/Cache/ScannerTest.php b/tests/lib/Files/Cache/ScannerTest.php index 736df2174d1..0f5335f4416 100644 --- a/tests/lib/Files/Cache/ScannerTest.php +++ b/tests/lib/Files/Cache/ScannerTest.php @@ -203,6 +203,44 @@ class ScannerTest extends \Test\TestCase { $this->assertFalse($this->cache->getIncomplete()); } + public function testBackgroundScanNestedIncompleteFolders() { + $this->storage->mkdir('folder'); + $this->scanner->backgroundScan(); + + $this->storage->mkdir('folder/subfolder1'); + $this->storage->mkdir('folder/subfolder2'); + + $this->storage->mkdir('folder/subfolder1/subfolder3'); + $this->cache->put('folder', ['size' => -1]); + $this->cache->put('folder/subfolder1', ['size' => -1]); + + // do a scan to get the folders into the cache. + $this->scanner->backgroundScan(); + + $this->assertTrue($this->cache->inCache('folder/subfolder1/subfolder3')); + + $this->storage->file_put_contents('folder/subfolder1/bar1.txt', 'foobar'); + $this->storage->file_put_contents('folder/subfolder1/subfolder3/bar3.txt', 'foobar'); + $this->storage->file_put_contents('folder/subfolder2/bar2.txt', 'foobar'); + + //mark folders as incomplete. + $this->cache->put('folder/subfolder1', ['size' => -1]); + $this->cache->put('folder/subfolder2', ['size' => -1]); + $this->cache->put('folder/subfolder1/subfolder3', ['size' => -1]); + + $this->scanner->backgroundScan(); + + $this->assertTrue($this->cache->inCache('folder/subfolder1/bar1.txt')); + $this->assertTrue($this->cache->inCache('folder/subfolder2/bar2.txt')); + $this->assertTrue($this->cache->inCache('folder/subfolder1/subfolder3/bar3.txt')); + + //check if folder sizes are correct. + $this->assertEquals(18, $this->cache->get('folder')['size']); + $this->assertEquals(12, $this->cache->get('folder/subfolder1')['size']); + $this->assertEquals(6, $this->cache->get('folder/subfolder1/subfolder3')['size']); + $this->assertEquals(6, $this->cache->get('folder/subfolder2')['size']); + } + public function testReuseExisting() { $this->fillTestFolders(); |