Skip to content

Commit c5f3ad4

Browse files
erikjvTheOneRing
authored andcommitted
More test framework fixes (#12100)
1 parent 35395ee commit c5f3ad4

File tree

4 files changed

+38
-21
lines changed

4 files changed

+38
-21
lines changed

src/libsync/httplogger.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "httplogger.h"
1616

1717
#include "common/chronoelapsedtimer.h"
18-
#include "common/utility.h"
1918

2019
#include <QBuffer>
2120
#include <QJsonArray>

test/testoauth.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,29 @@ class FakePostReply : public QNetworkReply
5454
if (aborted) {
5555
setError(OperationCanceledError, QStringLiteral("Operation Canceled"));
5656
Q_EMIT metaDataChanged();
57-
Q_EMIT finished();
57+
checkedFinished();
5858
return;
5959
}
6060
setHeader(QNetworkRequest::ContentLengthHeader, payload->size());
6161
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
6262
Q_EMIT metaDataChanged();
6363
if (bytesAvailable())
6464
Q_EMIT readyRead();
65-
Q_EMIT finished();
65+
checkedFinished();
6666
}
6767

6868
void abort() override {
6969
aborted = true;
7070
}
71+
72+
void checkedFinished()
73+
{
74+
if (!isFinished()) {
75+
setFinished(true);
76+
Q_EMIT finished();
77+
}
78+
}
79+
7180
qint64 bytesAvailable() const override {
7281
if (aborted)
7382
return 0;

test/testutils/syncenginetestutils.cpp

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -418,18 +418,13 @@ FakePropfindReply::FakePropfindReply(FileInfo &remoteRootFileInfo, QNetworkAcces
418418

419419
void FakePropfindReply::respond()
420420
{
421-
if (isFinished()) {
422-
return;
423-
}
424-
425421
setHeader(QNetworkRequest::ContentLengthHeader, payload.size());
426422
setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/xml; charset=utf-8"));
427423
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 207);
428-
setFinished(true);
429424
Q_EMIT metaDataChanged();
430425
if (bytesAvailable())
431426
Q_EMIT readyRead();
432-
Q_EMIT finished();
427+
checkedFinished();
433428
}
434429

435430
void FakePropfindReply::respond404()
@@ -441,7 +436,7 @@ void FakePropfindReply::respond404()
441436
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 404);
442437
setError(InternalServerError, QStringLiteral("Not Found"));
443438
Q_EMIT metaDataChanged();
444-
Q_EMIT finished();
439+
checkedFinished();
445440
}
446441

447442
qint64 FakePropfindReply::bytesAvailable() const
@@ -495,7 +490,7 @@ void FakePutReply::respond()
495490
setRawHeader("X-OC-MTime", "accepted"); // Prevents Q_ASSERT(!_runningNow) since we'll call PropagateItemJob::done twice in that case.
496491
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
497492
Q_EMIT metaDataChanged();
498-
Q_EMIT finished();
493+
checkedFinished();
499494
}
500495

501496
FakeMkcolReply::FakeMkcolReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
@@ -523,8 +518,9 @@ void FakeMkcolReply::respond()
523518
setRawHeader("OC-FileId", fileInfo->fileId);
524519
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
525520
Q_EMIT metaDataChanged();
526-
Q_EMIT finished();
527521
}
522+
523+
checkedFinished();
528524
}
529525

530526
FakeDeleteReply::FakeDeleteReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
@@ -545,7 +541,8 @@ void FakeDeleteReply::respond()
545541
{
546542
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 204);
547543
Q_EMIT metaDataChanged();
548-
Q_EMIT finished();
544+
545+
checkedFinished();
549546
}
550547

551548
FakeMoveReply::FakeMoveReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
@@ -569,8 +566,9 @@ void FakeMoveReply::respond()
569566
if (error() == QNetworkReply::NoError) {
570567
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
571568
Q_EMIT metaDataChanged();
572-
Q_EMIT finished();
573569
}
570+
571+
checkedFinished();
574572
}
575573

576574
FakeGetReply::FakeGetReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
@@ -649,7 +647,7 @@ void FakeGetReply::respond()
649647
Q_EMIT readyRead();
650648
}
651649
}
652-
Q_EMIT finished();
650+
checkedFinished();
653651
}
654652
}
655653

@@ -698,8 +696,7 @@ void FakePayloadReply::respond()
698696
setHeader(QNetworkRequest::ContentLengthHeader, _body.size());
699697
Q_EMIT metaDataChanged();
700698
Q_EMIT readyRead();
701-
setFinished(true);
702-
Q_EMIT finished();
699+
checkedFinished();
703700
}
704701
}
705702

@@ -748,8 +745,7 @@ void FakeErrorReply::respond()
748745

749746
void FakeErrorReply::slotSetFinished()
750747
{
751-
setFinished(true);
752-
Q_EMIT finished();
748+
checkedFinished();
753749
}
754750

755751
qint64 FakeErrorReply::readData(char *buf, qint64 max)
@@ -1117,13 +1113,23 @@ FakeReply::FakeReply(QObject *parent)
11171113

11181114
FakeReply::~FakeReply() { }
11191115

1116+
void FakeReply::checkedFinished()
1117+
{
1118+
// It can happen that this job is cancelled before the full data is read, and the job is aborted. This being the test framework, processing happens
1119+
// synchronously, so between the signals above and here, the job can get aborted, which emits the finished signal. So do NOT emit it again if
1120+
// this is the case.
1121+
if (!isFinished()) {
1122+
setFinished(true);
1123+
Q_EMIT finished();
1124+
}
1125+
}
1126+
11201127
void FakeReply::abort()
11211128
{
11221129
if (!isFinished()) {
11231130
setError(OperationCanceledError, QStringLiteral("Operation Canceled"));
1124-
setFinished(true);
11251131
Q_EMIT metaDataChanged();
1126-
Q_EMIT finished();
1132+
checkedFinished();
11271133
}
11281134
}
11291135

test/testutils/syncenginetestutils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,13 @@ class FakeReply : public QNetworkReply
299299
using QNetworkReply::setAttribute;
300300
using QNetworkReply::setRawHeader;
301301

302+
void checkedFinished();
303+
302304
virtual void abort() override;
303305
};
304306

305307
class FakePropfindReply : public FakeReply
308+
306309
{
307310
Q_OBJECT
308311

0 commit comments

Comments
 (0)