]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Add test for unmodified local files not getting mtimes changed upon upload to server
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 13 Jul 2023 13:04:07 +0000 (21:04 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 7 Aug 2023 08:25:19 +0000 (16:25 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
test/testsyncengine.cpp

index 9516a05570dc0f0663d93d464c783dc6b5d27d7c..f4c4c023664ec84e9d1f106c24b3e36cbb1eabed 100644 (file)
@@ -12,6 +12,7 @@
 #include "propagatorjobs.h"
 #include "syncengine.h"
 
+#include <QFile>
 #include <QtTest>
 
 using namespace OCC;
@@ -921,6 +922,29 @@ private slots:
         QCOMPARE(QFileInfo(fakeFolder.localPath() + "foo").lastModified(), datetime);
     }
 
+    // A local file should not be modified after upload to server if nothing has changed.
+    void testLocalFileInitialMtime()
+    {
+        constexpr auto fooFolder = "foo/";
+        constexpr auto barFile = "foo/bar";
+
+        FakeFolder fakeFolder{FileInfo{}};
+        fakeFolder.localModifier().mkdir(fooFolder);
+        fakeFolder.localModifier().insert(barFile);
+
+        const auto localDiskFileModifier = dynamic_cast<DiskFileModifier &>(fakeFolder.localModifier());
+
+        const auto localFile = localDiskFileModifier.find(barFile);
+        const auto localFileInfo = QFileInfo(localFile);
+        const auto expectedMtime = localFileInfo.metadataChangeTime();
+
+        QVERIFY(fakeFolder.syncOnce());
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+        const auto currentMtime = localFileInfo.metadataChangeTime();
+        QCOMPARE(currentMtime, expectedMtime);
+    }
+
     /**
      * Checks whether subsequent large uploads are skipped after a 507 error
      */