diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2017-03-09 11:54:14 +0300 |
---|---|---|
committer | Olivier Goffart <ogoffart@woboq.com> | 2017-03-09 11:54:14 +0300 |
commit | 0e8f0481d434272ad593f14e37db1774cf568c47 (patch) | |
tree | 43fba054024d4a761c8a8495e97733e9d6922cb1 /test/testsyncengine.cpp | |
parent | cdf16dd90536e001afb1ee781bd61aada231a0eb (diff) | |
parent | 1d0ef8307888f2b74d5cd76d51d3ed59881f923a (diff) |
Merge remote-tracking branch 'origin/2.3'
Conflicts:
src/libsync/owncloudpropagator.cpp
Diffstat (limited to 'test/testsyncengine.cpp')
-rw-r--r-- | test/testsyncengine.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 31f15df8e..5567608d5 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -224,6 +224,40 @@ private slots: QCOMPARE(finishedSpy.size(), 1); QCOMPARE(finishedSpy.first().first().toBool(), false); } + + void testDirDownloadWithError() { + FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()}; + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + fakeFolder.remoteModifier().mkdir("Y"); + fakeFolder.remoteModifier().mkdir("Y/Z"); + fakeFolder.remoteModifier().insert("Y/Z/d0"); + fakeFolder.remoteModifier().insert("Y/Z/d1"); + fakeFolder.remoteModifier().insert("Y/Z/d2"); + fakeFolder.remoteModifier().insert("Y/Z/d3"); + fakeFolder.remoteModifier().insert("Y/Z/d4"); + fakeFolder.remoteModifier().insert("Y/Z/d5"); + fakeFolder.remoteModifier().insert("Y/Z/d6"); + fakeFolder.remoteModifier().insert("Y/Z/d7"); + fakeFolder.remoteModifier().insert("Y/Z/d8"); + fakeFolder.remoteModifier().insert("Y/Z/d9"); + fakeFolder.serverErrorPaths().append("Y/Z/d2", 503); // 503 is a fatal error + fakeFolder.serverErrorPaths().append("Y/Z/d3", 503); // 503 is a fatal error + QVERIFY(!fakeFolder.syncOnce()); + QCoreApplication::processEvents(); // should not crash + + QSet<QString> seen; + for(const QList<QVariant> &args : completeSpy) { + auto item = args[0].value<SyncFileItemPtr>(); + qDebug() << item->_file << item->_isDirectory << item->_status; + QVERIFY(!seen.contains(item->_file)); // signal only sent once per item + seen.insert(item->_file); + if (item->_file == "Y/Z/d2" || item->_file == "Y/Z/d3") { + QVERIFY(item->_status == SyncFileItem::FatalError); + } + QVERIFY(item->_file != "Y/Z/d9"); // we should have aborted the sync before d9 starts + } + } + }; QTEST_GUILESS_MAIN(TestSyncEngine) |