From: Matthieu Gallien Date: Fri, 18 Nov 2022 14:09:08 +0000 (+0100) Subject: check that we update local file mtime on changes from server X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~124^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c379879e300f96e69d1df01ab6957e8b955c0994;p=nextcloud-desktop.git check that we update local file mtime on changes from server Signed-off-by: Matthieu Gallien --- diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 7a562bca5..8a9100a09 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -1243,6 +1243,45 @@ private slots: auto expectedState = fakeFolder.currentLocalState(); QCOMPARE(fakeFolder.currentRemoteState(), expectedState); } + + void testServerUpdatingMTimeShouldNotCreateConflicts() + { + constexpr auto testFile = "test.txt"; + constexpr auto CURRENT_MTIME = 1646057277; + + FakeFolder fakeFolder{ FileInfo{} }; + + fakeFolder.remoteModifier().insert(testFile); + fakeFolder.remoteModifier().setModTimeKeepEtag(testFile, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME - 2)); + + fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::DatabaseAndFilesystem); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.currentRemoteState())); + const auto fileFirstSync = fakeFolder.currentLocalState().find(testFile); + QVERIFY(fileFirstSync); + QCOMPARE(fileFirstSync->lastModified.toSecsSinceEpoch(), CURRENT_MTIME - 2); + + fakeFolder.remoteModifier().setModTimeKeepEtag(testFile, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME - 1)); + + fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::FilesystemOnly); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.currentRemoteState())); + const auto fileSecondSync = fakeFolder.currentLocalState().find(testFile); + QVERIFY(fileSecondSync); + QCOMPARE(fileSecondSync->lastModified.toSecsSinceEpoch(), CURRENT_MTIME - 1); + + fakeFolder.remoteModifier().setModTime(testFile, QDateTime::fromSecsSinceEpoch(CURRENT_MTIME)); + + fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::FilesystemOnly); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.currentRemoteState())); + const auto fileThirdSync = fakeFolder.currentLocalState().find(testFile); + QVERIFY(fileThirdSync); + QCOMPARE(fileThirdSync->lastModified.toSecsSinceEpoch(), CURRENT_MTIME); + } }; QTEST_GUILESS_MAIN(TestSyncEngine)