Skip to content

Commit

Permalink
Utilities: Fix QGCFileDownload for local files
Browse files Browse the repository at this point in the history
  • Loading branch information
HTRamsey committed Nov 26, 2024
1 parent d23d606 commit ba087c0
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/Utilities/QGCFileDownload.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion test/UnitTestList.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions test/Utilities/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
12 changes: 11 additions & 1 deletion test/Utilities/QGCFileDownloadTest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
19 changes: 19 additions & 0 deletions test/Utilities/arducopter.apj

Large diffs are not rendered by default.

0 comments on commit ba087c0

Please sign in to comment.