Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik@verbruggen.consulting>2022-06-09 17:54:27 +0300
committerErik Verbruggen <Erik.Verbruggen@Me.com>2022-06-09 18:58:27 +0300
commit59c58022d2115d444c4a3b294448338ca78892b3 (patch)
tree7f6b5b1a5f06bb205871476824b3b1b34e8a2e4a /test/testutils
parent7b742d2f38146e1546ed2b5919d9db297a3a2486 (diff)
Fix FakeGetReply for non-existing files
The old code didn't take into account the case where a file was removed on the server. It just Q_ASSERT-ed that it should always exist. However, the CI does release builds, so the assert never triggered. The problem is that in TestSyncVirtualFiles::testVirtualFileDownload the file "A/a3" *is* removed from the server while a download is scheduled. The fix is to handle this case separately as a valid response.
Diffstat (limited to 'test/testutils')
-rw-r--r--test/testutils/syncenginetestutils.cpp50
-rw-r--r--test/testutils/syncenginetestutils.h8
2 files changed, 38 insertions, 20 deletions
diff --git a/test/testutils/syncenginetestutils.cpp b/test/testutils/syncenginetestutils.cpp
index 04d1f28cb..4a9fdab5c 100644
--- a/test/testutils/syncenginetestutils.cpp
+++ b/test/testutils/syncenginetestutils.cpp
@@ -560,45 +560,57 @@ FakeGetReply::FakeGetReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::
Q_ASSERT(!fileName.isEmpty());
fileInfo = remoteRootFileInfo.find(fileName);
if (!fileInfo) {
- qDebug() << "meh;";
+ qDebug() << "Could not find file" << fileName << "on the remote";
+ state = State::FileNotFound;
}
- Q_ASSERT_X(fileInfo, Q_FUNC_INFO, "Could not find file on the remote");
QMetaObject::invokeMethod(this, &FakeGetReply::respond, Qt::QueuedConnection);
}
void FakeGetReply::respond()
{
- if (aborted) {
+ switch (state) {
+ case State::Aborted:
setError(OperationCanceledError, QStringLiteral("Operation Canceled"));
emit metaDataChanged();
- emit finished();
- return;
+ break;
+ case State::FileNotFound:
+ setError(ContentNotFoundError, QStringLiteral("File Not Found"));
+ emit metaDataChanged();
+ break;
+ case State::Ok:
+ payload = fileInfo->contentChar;
+ size = fileInfo->contentSize;
+ setHeader(QNetworkRequest::ContentLengthHeader, size);
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
+ setRawHeader("OC-ETag", fileInfo->etag);
+ setRawHeader("ETag", fileInfo->etag);
+ setRawHeader("OC-FileId", fileInfo->fileId);
+ setRawHeader("X-OC-Mtime", QByteArray::number(fileInfo->lastModifiedInSecondsUTC()));
+ emit metaDataChanged();
+ if (bytesAvailable()) {
+ emit readyRead();
+ }
}
- payload = fileInfo->contentChar;
- size = fileInfo->contentSize;
- setHeader(QNetworkRequest::ContentLengthHeader, size);
- setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
- setRawHeader("OC-ETag", fileInfo->etag);
- setRawHeader("ETag", fileInfo->etag);
- setRawHeader("OC-FileId", fileInfo->fileId);
- setRawHeader("X-OC-Mtime", QByteArray::number(fileInfo->lastModifiedInSecondsUTC()));
- emit metaDataChanged();
- if (bytesAvailable())
- emit readyRead();
emit finished();
}
void FakeGetReply::abort()
{
setError(OperationCanceledError, QStringLiteral("Operation Canceled"));
- aborted = true;
+ state = State::Aborted;
}
qint64 FakeGetReply::bytesAvailable() const
{
- if (aborted)
+ switch (state) {
+ case State::Ok:
+ return size + QIODevice::bytesAvailable();
+ case State::Aborted:
+ Q_FALLTHROUGH();
+ case State::FileNotFound:
return 0;
- return size + QIODevice::bytesAvailable();
+ }
+ Q_UNREACHABLE(); // Unreachable, but GCC on CentOS 7 does not understand that.
}
qint64 FakeGetReply::readData(char *data, qint64 maxlen)
diff --git a/test/testutils/syncenginetestutils.h b/test/testutils/syncenginetestutils.h
index cab2c6c08..119099fc3 100644
--- a/test/testutils/syncenginetestutils.h
+++ b/test/testutils/syncenginetestutils.h
@@ -342,10 +342,16 @@ class FakeGetReply : public FakeReply
{
Q_OBJECT
public:
+ enum class State {
+ Ok,
+ Aborted,
+ FileNotFound,
+ };
+
const FileInfo *fileInfo;
char payload;
int size;
- bool aborted = false;
+ State state = State::Ok;
FakeGetReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent);