Utilities: Fix QGCFileDownload for local files

This commit is contained in:
Holden
2024-11-26 16:14:47 -05:00
committed by Holden
parent d23d606da1
commit 75766a019d
5 changed files with 43 additions and 5 deletions
+6 -3
View File
@@ -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);
+1 -1
View File
@@ -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
+6
View File
@@ -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
)
+11 -1
View File
@@ -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