if (status != SyncFileItem::Success
&& status != SyncFileItem::Restoration
&& status != SyncFileItem::BlacklistedError
+ && status != SyncFileItem::FileNameClash
&& status != SyncFileItem::Conflict) {
if (_state != Finished) {
// Synchronously abort
case SyncFileItem::FileLocked:
case SyncFileItem::Restoration:
case SyncFileItem::FileNameInvalid:
- case SyncFileItem::FileNameClash:
case SyncFileItem::DetailError:
case SyncFileItem::Success:
break;
+ case SyncFileItem::FileNameClash:
case SyncFileItem::BlacklistedError:
- _errorStatus = SyncFileItem::BlacklistedError;
+ _errorStatus = status;
break;
}
}
QVERIFY(fileThirdSync);
QCOMPARE(fileThirdSync->lastModified.toSecsSinceEpoch(), CURRENT_MTIME);
}
+
+ void testFolderRemovalWithCaseClash()
+ {
+ FakeFolder fakeFolder{ FileInfo{} };
+ fakeFolder.remoteModifier().mkdir("A");
+ fakeFolder.remoteModifier().insert("A/file");
+
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+ fakeFolder.remoteModifier().insert("A/FILE");
+ QVERIFY(!fakeFolder.syncOnce());
+
+ fakeFolder.remoteModifier().mkdir("B");
+ fakeFolder.remoteModifier().rename("A/file", "B/file");
+ fakeFolder.remoteModifier().remove("A");
+
+ QVERIFY(!fakeFolder.syncOnce());
+ auto folderA = fakeFolder.currentLocalState().find("A");
+ QCOMPARE(folderA, nullptr);
+ }
};
QTEST_GUILESS_MAIN(TestSyncEngine)