Unit tests for ignorelist exclude status stuck.
authoralex-z <blackslayer4@gmail.com>
Mon, 4 Mar 2024 15:50:10 +0000 (16:50 +0100)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Tue, 5 Mar 2024 09:40:09 +0000 (10:40 +0100)
Signed-off-by: alex-z <blackslayer4@gmail.com>
test/testsyncfilestatustracker.cpp

index 9020a98b60caa03131e5e84d526109438a2767fb..13bb6c9e911c30c199870fdb2d58cbabd70819e8 100644 (file)
@@ -511,6 +511,52 @@ private slots:
         statusSpy.clear();
     }
 
+    void silentlyExcludedFilesRemovedFromExclude()
+    {
+        FakeFolder fakeFolder{{}};
+        fakeFolder.localModifier().mkdir("A");
+        fakeFolder.localModifier().mkdir("A/photos");
+        fakeFolder.localModifier().insert("A/photos/image.png");
+        fakeFolder.localModifier().insert("A/photos/image1.png");
+        fakeFolder.localModifier().insert("A/photos/image2.png");
+        StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+        fakeFolder.scheduleSync();
+        fakeFolder.execUntilFinished();
+        verifyThatPushMatchesPull(fakeFolder, statusSpy);
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+        QCOMPARE(statusSpy.statusOf("A/photos/image.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        QCOMPARE(statusSpy.statusOf("A/photos/image1.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        QCOMPARE(statusSpy.statusOf("A/photos/image2.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        statusSpy.clear();
+
+        // add ignore pattern for .png files and Allow to Delete
+        fakeFolder.syncEngine().excludedFiles().addManualExclude(QStringLiteral("]*.png"));
+
+        // sync again and make sure .png files are ignored
+        fakeFolder.scheduleSync();
+        fakeFolder.execUntilFinished();
+        verifyThatPushMatchesPull(fakeFolder, statusSpy);
+        QCOMPARE(statusSpy.statusOf("A/photos/image.png"), SyncFileStatus(SyncFileStatus::StatusExcluded));
+        QCOMPARE(statusSpy.statusOf("A/photos/image1.png"), SyncFileStatus(SyncFileStatus::StatusExcluded));
+        QCOMPARE(statusSpy.statusOf("A/photos/image2.png"), SyncFileStatus(SyncFileStatus::StatusExcluded));
+        statusSpy.clear();
+
+        // remove exclude for .png files
+        fakeFolder.syncEngine().excludedFiles().clearManualExcludes();
+        fakeFolder.syncEngine().excludedFiles().reloadExcludeFiles();
+
+        // make sure the status is again correct
+        fakeFolder.scheduleSync();
+        fakeFolder.execUntilFinished();
+        verifyThatPushMatchesPull(fakeFolder, statusSpy);
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+        QCOMPARE(statusSpy.statusOf("A/photos/image.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        QCOMPARE(statusSpy.statusOf("A/photos/image1.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        QCOMPARE(statusSpy.statusOf("A/photos/image2.png"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+        statusSpy.clear();
+    }
+
 };
 
 QTEST_GUILESS_MAIN(TestSyncFileStatusTracker)