diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index 908b865002a..091f1d3d1e4 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -287,8 +287,9 @@ class Trashbin { try { $moveSuccessful = true; + $inCache = $sourceStorage->getCache()->inCache($sourceInternalPath); $trashStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); - if ($sourceStorage->getCache()->inCache($sourceInternalPath)) { + if ($inCache) { $trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); } } catch (\OCA\Files_Trashbin\Exceptions\CopyRecursiveException $e) { diff --git a/apps/files_trashbin/tests/TrashbinTest.php b/apps/files_trashbin/tests/TrashbinTest.php index 745078f3ba0..ad9e1631607 100644 --- a/apps/files_trashbin/tests/TrashbinTest.php +++ b/apps/files_trashbin/tests/TrashbinTest.php @@ -653,6 +653,28 @@ class TrashbinTest extends \Test\TestCase { } } + public function testTrashSizePropagation(): void { + $view = new \OC\Files\View('/' . self::TEST_TRASHBIN_USER1 . '/files_trashbin/files'); + + $userFolder = \OCP\Server::get(\OCP\Files\IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1); + $file1 = $userFolder->newFile('foo.txt'); + $file1->putContent('1'); + + $this->assertTrue($userFolder->nodeExists('foo.txt')); + $file1->delete(); + $this->assertFalse($userFolder->nodeExists('foo.txt')); + $this->assertEquals(1, $view->getFileInfo('')->getSize()); + + $folder = $userFolder->newFolder('bar'); + $file2 = $folder->newFile('baz.txt'); + $file2->putContent('22'); + + $this->assertTrue($userFolder->nodeExists('bar')); + $folder->delete(); + $this->assertFalse($userFolder->nodeExists('bar')); + $this->assertEquals(3, $view->getFileInfo('')->getSize()); + } + /** * @param string $user * @param bool $create