QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
}
+
+ // Test for https://github.com/owncloud/client/issues/6694
+ void testInvertFolderHierarchy()
+ {
+ FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
+ fakeFolder.remoteModifier().mkdir("A/Empty");
+ fakeFolder.remoteModifier().mkdir("A/Empty/Foo");
+ fakeFolder.remoteModifier().mkdir("C/AllEmpty");
+ fakeFolder.remoteModifier().mkdir("C/AllEmpty/Bar");
+ QVERIFY(fakeFolder.syncOnce());
+
+ // "Empty" is after "A", alphabetically
+ fakeFolder.localModifier().rename("A/Empty", "Empty");
+ fakeFolder.localModifier().rename("A", "Empty/A");
+
+ // "AllEmpty" is before "C", alphabetically
+ fakeFolder.localModifier().rename("C/AllEmpty", "AllEmpty");
+ fakeFolder.localModifier().rename("C", "AllEmpty/C");
+
+ auto expectedState = fakeFolder.currentLocalState();
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), expectedState);
+ QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
+
+ /* FIXME - likely addressed by ogoffart's sync code refactor
+ // Now, the revert, but "crossed"
+ fakeFolder.localModifier().rename("Empty/A", "A");
+ fakeFolder.localModifier().rename("AllEmpty/C", "C");
+ fakeFolder.localModifier().rename("Empty", "C/Empty");
+ fakeFolder.localModifier().rename("AllEmpty", "A/AllEmpty");
+ expectedState = fakeFolder.currentLocalState();
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), expectedState);
+ QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
+ */
+ }
};
QTEST_GUILESS_MAIN(TestSyncMove)