Tests for placeholder file metadata update.
authoralex-z <blackslayer4@gmail.com>
Thu, 14 Sep 2023 13:04:46 +0000 (15:04 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Thu, 14 Sep 2023 20:27:34 +0000 (22:27 +0200)
Signed-off-by: alex-z <blackslayer4@gmail.com>
test/testsynccfapi.cpp

index fc6602dcd77d5ef83ab2a3802ff4a1f896dcb213..0397bc0fc99ba375bc7b8acc63c19f3c4fb951f0 100644 (file)
@@ -1354,6 +1354,36 @@ private slots:
         const auto localFileLocked = QFileInfo{fakeFolder.localPath() + u"A/a1"};
         QVERIFY(!localFileLocked.isWritable());
     }
+
+    void testLinkFileDoesNotConvertToPlaceholder()
+    {
+        // inspired by GH issue #6041
+        FakeFolder fakeFolder{FileInfo{}};
+        auto vfs = setupVfs(fakeFolder);
+
+        // Create a Windows shotcut (.lnk) file
+        fakeFolder.remoteModifier().insert("linkfile.lnk");
+
+        QVERIFY(fakeFolder.syncOnce());
+        ItemCompletedSpy completeSpy(fakeFolder);
+        QVERIFY(fakeFolder.syncOnce());
+        QVERIFY(!vfs->pinState("linkfile.lnk").isValid() || vfs->pinState("linkfile.lnk").get() == PinState::Excluded);
+        QVERIFY(itemInstruction(completeSpy, "linkfile.lnk", CSYNC_INSTRUCTION_NONE));
+    }
+
+    void testFolderDoesNotUpdatePlaceholderMetadata()
+    {
+        FakeFolder fakeFolder{FileInfo{}};
+        auto vfs = setupVfs(fakeFolder);
+
+        fakeFolder.remoteModifier().mkdir("A");
+        fakeFolder.remoteModifier().insert("A/file");
+
+        QVERIFY(fakeFolder.syncOnce());
+        ItemCompletedSpy completeSpy(fakeFolder);
+        QVERIFY(fakeFolder.syncOnce());
+        QVERIFY(itemInstruction(completeSpy, "A", CSYNC_INSTRUCTION_NONE));
+    }
 };
 
 QTEST_GUILESS_MAIN(TestSyncCfApi)