From 0c968800bb7dc72bceb3852dc17ce0b4993aafa1 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 25 Mar 2019 10:53:13 +0100 Subject: [PATCH] Vfs: Hydrating a virtual is SYNC not NEW #7101 Previously it'd be NEW(ItemTypeFile), but now it has changed to be SYNC(ItemTypeVirtualFileDownload) which allows better classification. --- src/libsync/discovery.cpp | 4 ++-- src/libsync/propagatedownload.cpp | 3 --- test/testsyncvirtualfiles.cpp | 13 ++++++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 16b11cf112b..221e402590a 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -333,7 +333,7 @@ void ProcessDirectoryJob::processFile(PathTuple path, || localEntry.type == ItemTypeVirtualFileDownload) && (localEntry.isValid() || _queryLocal == ParentNotChanged)) { item->_direction = SyncFileItem::Down; - item->_instruction = CSYNC_INSTRUCTION_NEW; + item->_instruction = CSYNC_INSTRUCTION_SYNC; item->_type = ItemTypeVirtualFileDownload; } @@ -382,7 +382,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo( // The above check for the localEntry existing is important. Otherwise it breaks // the case where a file is moved and simultaneously tagged for download in the db. item->_direction = SyncFileItem::Down; - item->_instruction = CSYNC_INSTRUCTION_NEW; + item->_instruction = CSYNC_INSTRUCTION_SYNC; item->_type = ItemTypeVirtualFileDownload; } else if (dbEntry._etag != serverEntry.etag) { item->_direction = SyncFileItem::Down; diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 60c43ef88fd..e5c395c9898 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -1028,9 +1028,6 @@ void PropagateDownloadFile::downloadFinished() propagator()->_journal->setConflictRecord(_conflictRecord); if (_item->_type == ItemTypeVirtualFileDownload) { - // A downloaded virtual file becomes normal - _item->_type = ItemTypeFile; - // If the virtual file used to have a different name and db // entry, wipe both now. auto vfs = propagator()->syncOptions()._vfs; diff --git a/test/testsyncvirtualfiles.cpp b/test/testsyncvirtualfiles.cpp index 6b99e21bbc1..3940cdc5e29 100644 --- a/test/testsyncvirtualfiles.cpp +++ b/test/testsyncvirtualfiles.cpp @@ -356,9 +356,11 @@ private slots: fakeFolder.localModifier().insert("A/a6"); fakeFolder.localModifier().remove("A/a6.owncloud"); QVERIFY(fakeFolder.syncOnce()); - QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_SYNC)); + QCOMPARE(findItem(completeSpy, "A/a1")->_type, ItemTypeVirtualFileDownload); QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE)); - QVERIFY(itemInstruction(completeSpy, "A/a2", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemInstruction(completeSpy, "A/a2", CSYNC_INSTRUCTION_SYNC)); + QCOMPARE(findItem(completeSpy, "A/a2")->_type, ItemTypeVirtualFileDownload); QVERIFY(itemInstruction(completeSpy, "A/a2.owncloud", CSYNC_INSTRUCTION_NONE)); QVERIFY(itemInstruction(completeSpy, "A/a3.owncloud", CSYNC_INSTRUCTION_REMOVE)); QVERIFY(itemInstruction(completeSpy, "A/a4m", CSYNC_INSTRUCTION_NEW)); @@ -405,7 +407,7 @@ private slots: triggerDownload(fakeFolder, "A/a1"); fakeFolder.serverErrorPaths().append("A/a1", 500); QVERIFY(!fakeFolder.syncOnce()); - QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_SYNC)); QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE)); QVERIFY(fakeFolder.currentLocalState().find("A/a1.owncloud")); QVERIFY(!fakeFolder.currentLocalState().find("A/a1")); @@ -415,7 +417,7 @@ private slots: fakeFolder.serverErrorPaths().clear(); QVERIFY(fakeFolder.syncOnce()); - QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_SYNC)); QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE)); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QCOMPARE(dbRecord(fakeFolder, "A/a1")._type, ItemTypeFile); @@ -622,7 +624,8 @@ private slots: QVERIFY(itemInstruction(completeSpy, "renamed2.owncloud", CSYNC_INSTRUCTION_RENAME)); QVERIFY(dbRecord(fakeFolder, "renamed2.owncloud")._type == ItemTypeVirtualFile); - QVERIFY(itemInstruction(completeSpy, "file3", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemInstruction(completeSpy, "file3", CSYNC_INSTRUCTION_SYNC)); + QVERIFY(dbRecord(fakeFolder, "file3")._type == ItemTypeFile); cleanup(); // Test rename while adding/removing vfs suffix