Utilities: Fix QGCFileDownload for local files
This commit is contained in:
@@ -61,6 +61,7 @@ bool QGCFileDownload::download(const QString &remoteFile, const QList<QPair<QNet
|
||||
if (remoteFile.startsWith("http:") || remoteFile.startsWith("https:")) {
|
||||
remoteUrl.setUrl(remoteFile);
|
||||
} else {
|
||||
// QNetworkRequest is used for local files too to use the same code path
|
||||
remoteUrl = QUrl::fromLocalFile(remoteFile);
|
||||
}
|
||||
|
||||
@@ -111,9 +112,11 @@ void QGCFileDownload::_downloadFinished()
|
||||
return;
|
||||
}
|
||||
|
||||
const int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
if ((statusCode < HTTP_Response::SUCCESS_OK) || (statusCode >= HTTP_Response::REDIRECTION_MULTIPLE_CHOICES)) {
|
||||
return;
|
||||
if (!reply->url().isLocalFile()) {
|
||||
const int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
if ((statusCode < HTTP_Response::SUCCESS_OK) || (statusCode >= HTTP_Response::REDIRECTION_MULTIPLE_CHOICES)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
||||
|
||||
@@ -198,7 +198,7 @@ int runTests(bool stress, QStringView unitTestOptions)
|
||||
// Utilities
|
||||
// Compression
|
||||
UT_REGISTER_TEST(DecompressionTest)
|
||||
// UT_REGISTER_TEST(QGCFileDownloadTest)
|
||||
UT_REGISTER_TEST(QGCFileDownloadTest)
|
||||
|
||||
// Vehicle
|
||||
// Components
|
||||
|
||||
@@ -16,3 +16,9 @@ target_link_libraries(UtilitiesTest
|
||||
)
|
||||
|
||||
target_include_directories(UtilitiesTest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
qt_add_resources(UtilitiesTest "UtilitiesTest_res"
|
||||
PREFIX "/"
|
||||
FILES
|
||||
arducopter.apj
|
||||
)
|
||||
|
||||
@@ -3,10 +3,20 @@
|
||||
#include "QGCFileDownload.h"
|
||||
|
||||
#include <QtTest/QTest>
|
||||
#include <QtTest/QSignalSpy>
|
||||
|
||||
void QGCFileDownloadTest::_testFileDownload()
|
||||
{
|
||||
QGCFileDownload file;
|
||||
// Local File
|
||||
QGCFileDownload *const downloader = new QGCFileDownload(this);
|
||||
(void) connect(downloader, &QGCFileDownload::downloadComplete, this,
|
||||
[this](const QString &remoteFile, const QString &localFile, const QString &errorMsg) {
|
||||
sender()->deleteLater();
|
||||
QVERIFY(errorMsg.isEmpty());
|
||||
});
|
||||
QSignalSpy spyQGCFileDownloadDownloadComplete(downloader, &QGCFileDownload::downloadComplete);
|
||||
QVERIFY(downloader->download(":/arducopter.apj"));
|
||||
QVERIFY(spyQGCFileDownloadDownloadComplete.wait(1000));
|
||||
}
|
||||
|
||||
void QGCFileDownloadTest::_testCachedFileDownload()
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user