Add test testCreateLocalPathsWithLeadingAndTrailingSpaces_syncOnSupportingOs.
authorCamila Ayres <hello@camilasan.com>
Tue, 9 Jul 2024 13:51:22 +0000 (15:51 +0200)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Fri, 27 Sep 2024 07:26:21 +0000 (07:26 +0000)
- Fix discovery tests for files with invalid names.
- Now leading/trailing spaces trigger an error only on Windows.

Signed-off-by: Camila Ayres <hello@camilasan.com>
test/testlocaldiscovery.cpp

index 11c7d2e0de0f605f5ec737c53e556de4fe867bfa..b69decf3526fc105881621e1b0b86adebbf9eb8e 100644 (file)
@@ -358,6 +358,7 @@ private slots:
 
         QVERIFY(fakeFolder.syncOnce());
 
+#ifdef Q_OS_WINDOWS
         QCOMPARE(completeSpy.findItem(fileWithSpaces1)->_status, SyncFileItem::Status::FileNameInvalid);
         QCOMPARE(completeSpy.findItem(fileWithSpaces2)->_status, SyncFileItem::Status::FileNameInvalid);
         QCOMPARE(completeSpy.findItem(fileWithSpaces3)->_status, SyncFileItem::Status::FileNameInvalid);
@@ -365,6 +366,15 @@ private slots:
         QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::FileNameInvalid);
         QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::FileNameInvalid);
         QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::FileNameInvalid);
+#else
+        QCOMPARE(completeSpy.findItem(fileWithSpaces1)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(fileWithSpaces2)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(fileWithSpaces3)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(fileWithSpaces4)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::Success);
+        QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::Success);
+#endif
 
         fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces1);
         fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces2);
@@ -379,16 +389,14 @@ private slots:
         fakeFolder.syncEngine().setLocalDiscoveryOptions(LocalDiscoveryStyle::DatabaseAndFilesystem, {QStringLiteral("foo"), QStringLiteral("bar"), QStringLiteral("bla"), QStringLiteral("A/foo"), QStringLiteral("A/bar"), QStringLiteral("A/bla")});
         QVERIFY(fakeFolder.syncOnce());
 
+#ifdef Q_OS_WINDOWS
         QCOMPARE(completeSpy.findItem(fileWithSpaces1)->_status, SyncFileItem::Status::Success);
         QCOMPARE(completeSpy.findItem(fileWithSpaces2)->_status, SyncFileItem::Status::Success);
         QCOMPARE(completeSpy.findItem(fileWithSpaces3)->_status, SyncFileItem::Status::Success);
         QCOMPARE(completeSpy.findItem(fileWithSpaces4)->_status, SyncFileItem::Status::Success);
         QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::Success);
         QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::Success);
-#ifdef Q_OS_WINDOWS
         QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::NormalError);
-#else
-        QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::Success);
 #endif
     }
 
@@ -422,6 +430,43 @@ private slots:
         }
     }
 
+    void testCreateLocalPathsWithLeadingAndTrailingSpaces_syncOnSupportingOs()
+    {
+        FakeFolder fakeFolder{FileInfo()};
+        fakeFolder.localModifier().mkdir("A");
+        QVERIFY(fakeFolder.syncOnce());
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+        const QString fileWithSpaces1("A/ space");
+        const QString fileWithSpaces2("A/ space ");
+        const QString fileWithSpaces3("A/space ");
+        const QString folderWithSpaces1("A ");
+        const QString folderWithSpaces2(" B ");
+
+        fakeFolder.localModifier().insert(fileWithSpaces1);
+        fakeFolder.localModifier().insert(fileWithSpaces2);
+        fakeFolder.localModifier().insert(fileWithSpaces3);
+        fakeFolder.localModifier().mkdir(folderWithSpaces1);
+        fakeFolder.localModifier().mkdir(folderWithSpaces2);
+
+        ItemCompletedSpy completeSpy(fakeFolder);
+        completeSpy.clear();
+
+        QVERIFY(fakeFolder.syncOnce());
+        if (!Utility::isWindows()) {
+            QCOMPARE(completeSpy.findItem(fileWithSpaces1)->_status, SyncFileItem::Status::Success);
+            QCOMPARE(completeSpy.findItem(fileWithSpaces2)->_status, SyncFileItem::Status::Success);
+            QCOMPARE(completeSpy.findItem(fileWithSpaces3)->_status, SyncFileItem::Status::Success);
+            QCOMPARE(completeSpy.findItem(folderWithSpaces1)->_status, SyncFileItem::Status::Success);
+            QCOMPARE(completeSpy.findItem(folderWithSpaces2)->_status, SyncFileItem::Status::Success);
+            QVERIFY(fakeFolder.remoteModifier().find(fileWithSpaces1));
+            QVERIFY(fakeFolder.remoteModifier().find(fileWithSpaces2));
+            QVERIFY(fakeFolder.remoteModifier().find(fileWithSpaces3));
+            QVERIFY(fakeFolder.remoteModifier().find(folderWithSpaces1));
+            QVERIFY(fakeFolder.remoteModifier().find(folderWithSpaces2));
+        }
+    }
+
     void testCreateFileWithTrailingSpaces_remoteGetRenamedManually()
     {
         // On Windows we can't create files/folders with leading/trailing spaces locally. So, we have to fail those items. On other OSs - we just sync them down normally.
@@ -481,7 +526,15 @@ private slots:
         QVERIFY(fakeFolder.syncOnce());
 
         QVERIFY(fakeFolder.currentRemoteState().find(fileTrimmed));
-        QVERIFY(!fakeFolder.currentRemoteState().find(fileWithSpaces));
+
+        if (Utility::isWindows()) {
+            // no file with spaces on Windows
+            QVERIFY(!fakeFolder.currentRemoteState().find(fileWithSpaces));
+        } else {
+            //Linux/Mac OS allows spaces
+            QVERIFY(fakeFolder.currentRemoteState().find(fileWithSpaces));
+        }
+
         QVERIFY(fakeFolder.currentLocalState().find(fileWithSpaces));
         QVERIFY(fakeFolder.currentLocalState().find(fileTrimmed));
     }