Skip to content

Commit

Permalink
SocketAPI: fix status after a failure to move
Browse files Browse the repository at this point in the history
Issue #7759
  • Loading branch information
ogoffart committed Mar 25, 2020
1 parent 56a25ed commit ccb83da
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 5 deletions.
6 changes: 6 additions & 0 deletions changelog/unreleased/7759
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Bugfix: Fix status icon after move errors
The file status icon was not showing an error when a move operation failed

https://github.com/owncloud/client/issues/7759

10 changes: 5 additions & 5 deletions src/libsync/syncfilestatustracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,10 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector &items)
_dirtyPaths.remove(item->destination());

if (hasErrorStatus(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusError;
_syncProblems[item->destination()] = SyncFileStatus::StatusError;
invalidateParentPaths(item->destination());
} else if (hasExcludedStatus(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusExcluded;
_syncProblems[item->destination()] = SyncFileStatus::StatusExcluded;
}

SharedFlag sharedFlag = item->_remotePerm.hasPermission(RemotePermissions::IsShared) ? Shared : NotShared;
Expand Down Expand Up @@ -273,12 +273,12 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItemPtr &item)
qCDebug(lcStatusTracker) << "Item completed" << item->destination() << item->_status << item->_instruction;

if (hasErrorStatus(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusError;
_syncProblems[item->destination()] = SyncFileStatus::StatusError;
invalidateParentPaths(item->destination());
} else if (hasExcludedStatus(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusExcluded;
_syncProblems[item->destination()] = SyncFileStatus::StatusExcluded;
} else {
_syncProblems.erase(item->_file);
_syncProblems.erase(item->destination());
}

SharedFlag sharedFlag = item->_remotePerm.hasPermission(RemotePermissions::IsShared) ? Shared : NotShared;
Expand Down
44 changes: 44 additions & 0 deletions test/testsyncfilestatustracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,50 @@ private slots:

QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
}

void renameError() {
FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
fakeFolder.serverErrorPaths().append("A/a1");
fakeFolder.localModifier().rename("A/a1", "A/a1m");
fakeFolder.localModifier().rename("B/b1", "B/b1m");
StatusPushSpy statusSpy(fakeFolder.syncEngine());

fakeFolder.scheduleSync();
fakeFolder.execUntilBeforePropagation();

verifyThatPushMatchesPull(fakeFolder, statusSpy);

QCOMPARE(statusSpy.statusOf("A/a1m"), SyncFileStatus(SyncFileStatus::StatusSync));
QCOMPARE(statusSpy.statusOf("A/a1"), statusSpy.statusOf("A/a1notexist"));
QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusSync));
QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
QCOMPARE(statusSpy.statusOf("B/b1m"), SyncFileStatus(SyncFileStatus::StatusSync));

fakeFolder.execUntilFinished();
verifyThatPushMatchesPull(fakeFolder, statusSpy);
QCOMPARE(statusSpy.statusOf("A/a1m"), SyncFileStatus(SyncFileStatus::StatusError));
QCOMPARE(statusSpy.statusOf("A/a1"), statusSpy.statusOf("A/a1notexist"));
QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
QCOMPARE(statusSpy.statusOf("B/b1m"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
statusSpy.clear();

QVERIFY(!fakeFolder.syncOnce());
verifyThatPushMatchesPull(fakeFolder, statusSpy);
statusSpy.clear();
QVERIFY(!fakeFolder.syncOnce());
verifyThatPushMatchesPull(fakeFolder, statusSpy);
QCOMPARE(statusSpy.statusOf("A/a1m"), SyncFileStatus(SyncFileStatus::StatusError));
QCOMPARE(statusSpy.statusOf("A/a1"), statusSpy.statusOf("A/a1notexist"));
QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusNone));
QCOMPARE(statusSpy.statusOf("B/b1m"), SyncFileStatus(SyncFileStatus::StatusNone));
statusSpy.clear();
}

};

QTEST_GUILESS_MAIN(TestSyncFileStatusTracker)
Expand Down

0 comments on commit ccb83da

Please sign in to comment.