mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-23 12:55:44 +03:00
Discovery: Set right direction when restoring deleted discovery because it has modified files
(Catched by a faillure of t1.pl)
This commit is contained in:
parent
6da96cd026
commit
a29320b18d
3 changed files with 49 additions and 0 deletions
|
@ -1140,6 +1140,7 @@ int ProcessDirectoryJob::processSubJobs(int nbJobs)
|
|||
if (_childModified && _dirItem->_instruction == CSYNC_INSTRUCTION_REMOVE) {
|
||||
// re-create directory that has modified contents
|
||||
_dirItem->_instruction = CSYNC_INSTRUCTION_NEW;
|
||||
_dirItem->_direction = _dirItem->_direction == SyncFileItem::Up ? SyncFileItem::Down : SyncFileItem::Up;
|
||||
}
|
||||
if (_childModified && _dirItem->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE && !_dirItem->isDirectory()) {
|
||||
// Replacing a directory by a file is a conflict, if the directory had modified children
|
||||
|
|
|
@ -47,6 +47,7 @@ nextcloud_add_test(Utility "")
|
|||
nextcloud_add_test(SyncEngine "syncenginetestutils.h")
|
||||
nextcloud_add_test(SyncVirtualFiles "syncenginetestutils.h")
|
||||
nextcloud_add_test(SyncMove "syncenginetestutils.h")
|
||||
nextcloud_add_test(SyncDelete "syncenginetestutils.h")
|
||||
nextcloud_add_test(SyncConflict "syncenginetestutils.h")
|
||||
nextcloud_add_test(SyncFileStatusTracker "syncenginetestutils.h")
|
||||
nextcloud_add_test(Download "syncenginetestutils.h")
|
||||
|
|
47
test/testsyncdelete.cpp
Normal file
47
test/testsyncdelete.cpp
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* This software is in the public domain, furnished "as is", without technical
|
||||
* support, and with no warranty, express or implied, as to its usefulness for
|
||||
* any purpose.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <QtTest>
|
||||
#include "syncenginetestutils.h"
|
||||
#include <syncengine.h>
|
||||
|
||||
using namespace OCC;
|
||||
|
||||
class TestSyncDelete : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
|
||||
void testDeleteDirectoryWithNewFile()
|
||||
{
|
||||
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
|
||||
|
||||
// Remove a directory on the server with new files on the client
|
||||
fakeFolder.remoteModifier().remove("A");
|
||||
fakeFolder.localModifier().insert("A/hello.txt");
|
||||
|
||||
// Symetry
|
||||
fakeFolder.localModifier().remove("B");
|
||||
fakeFolder.remoteModifier().insert("B/hello.txt");
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
// A/a1 must be gone because the directory was removed on the server, but hello.txt must be there
|
||||
QVERIFY(!fakeFolder.currentRemoteState().find("A/a1"));
|
||||
QVERIFY(fakeFolder.currentRemoteState().find("A/hello.txt"));
|
||||
|
||||
// Symetry
|
||||
QVERIFY(!fakeFolder.currentRemoteState().find("B/b1"));
|
||||
QVERIFY(fakeFolder.currentRemoteState().find("B/hello.txt"));
|
||||
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_GUILESS_MAIN(TestSyncDelete)
|
||||
#include "testsyncdelete.moc"
|
Loading…
Reference in a new issue