new autotest to ensure that we delete folders despite blacklist errors
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 27 Oct 2022 16:00:10 +0000 (18:00 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Mon, 7 Nov 2022 17:33:13 +0000 (18:33 +0100)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
test/testsyncmove.cpp

index f1488c8189b758b6b87ff9e99d31a37228249527..c8f5ac2d68e002fad7a69b24dc145b00616aca22 100644 (file)
@@ -890,6 +890,29 @@ private slots:
         QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
     }
 
+    void testRenameParallelismWithBlacklist()
+    {
+        constexpr auto testFileName = "blackListFile";
+        FakeFolder fakeFolder{ FileInfo{} };
+        fakeFolder.remoteModifier().mkdir("A");
+        fakeFolder.remoteModifier().insert("A/file");
+
+        QVERIFY(fakeFolder.syncOnce());
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+        fakeFolder.remoteModifier().insert(testFileName);
+        fakeFolder.serverErrorPaths().append(testFileName, 500); // will be blacklisted
+        QVERIFY(!fakeFolder.syncOnce());
+
+        fakeFolder.remoteModifier().mkdir("B");
+        fakeFolder.remoteModifier().rename("A/file", "B/file");
+        fakeFolder.remoteModifier().remove("A");
+
+        QVERIFY(!fakeFolder.syncOnce());
+        auto folderA = fakeFolder.currentLocalState().find("A");
+        QCOMPARE(folderA, nullptr);
+    }
+
     void testMovedWithError_data()
     {
         QTest::addColumn<Vfs::Mode>("vfsMode");