if (!_hasNoneFiles && _hasRemoveFile && cfgFile.promptDeleteFiles()) {
qCInfo(lcEngine) << "All the files are going to be changed, asking the user";
bool cancel = false;
- emit aboutToRemoveAllFiles(_syncItems.first()->_direction, &cancel);
+ int side = 0; // > 0 means more deleted on the server. < 0 means more deleted on the client
+ foreach (const auto &it, _syncItems) {
+ if (it->_instruction == CSYNC_INSTRUCTION_REMOVE) {
+ side += it->_direction == SyncFileItem::Down ? 1 : -1;
+ }
+ }
+ emit aboutToRemoveAllFiles(side >= 0 ? SyncFileItem::Down : SyncFileItem::Up, &cancel);
if (cancel) {
qCInfo(lcEngine) << "User aborted sync";
finalize(false);
QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
}
+ void testResetServer()
+ {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+
+ int aboutToRemoveAllFilesCalled = 0;
+ QObject::connect(&fakeFolder.syncEngine(), &SyncEngine::aboutToRemoveAllFiles,
+ [&](SyncFileItem::Direction dir, bool *cancel) {
+ QCOMPARE(aboutToRemoveAllFilesCalled, 0);
+ aboutToRemoveAllFilesCalled++;
+ QCOMPARE(dir, SyncFileItem::Down);
+ *cancel = false;
+ });
+
+ // Some small changes
+ fakeFolder.localModifier().mkdir("Q");
+ fakeFolder.localModifier().insert("Q/q1");
+ fakeFolder.localModifier().appendByte("B/b1");
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(aboutToRemoveAllFilesCalled, 0);
+
+ // Do some change localy
+ fakeFolder.localModifier().appendByte("A/a1");
+
+ // reset the server.
+ fakeFolder.remoteModifier() = FileInfo::A12_B12_C12_S12();
+
+ // Now, aboutToRemoveAllFiles with down as a direction
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(aboutToRemoveAllFilesCalled, 1);
+
+ }
+
void testDataFingetPrint_data()
{
QTest::addColumn<bool>("hasInitialFingerPrint");