From d26fc34c5c766f1215ae9bc995bd6f87e29b985d Mon Sep 17 00:00:00 2001
From: alex-z <blackslayer4@gmail.com>
Date: Thu, 14 Sep 2023 15:04:46 +0200
Subject: [PATCH] Tests for placeholder file metadata update.

Signed-off-by: alex-z <blackslayer4@gmail.com>
---
 test/testsynccfapi.cpp | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/test/testsynccfapi.cpp b/test/testsynccfapi.cpp
index fc6602dcd77d5..0397bc0fc99ba 100644
--- a/test/testsynccfapi.cpp
+++ b/test/testsynccfapi.cpp
@@ -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)