diff --git a/tools/nitpick/src/Nitpick.cpp b/tools/nitpick/src/Nitpick.cpp index 12c038a50f..ccbb2da762 100644 --- a/tools/nitpick/src/Nitpick.cpp +++ b/tools/nitpick/src/Nitpick.cpp @@ -88,12 +88,28 @@ void Nitpick::setup() { if (_testRunnerDesktop) { delete _testRunnerDesktop; } - _testRunnerDesktop = new TestRunnerDesktop(dayCheckboxes, timeEditCheckboxes, timeEdits, _ui.workingFolderRunOnDesktopLabel, _ui.checkBoxServerless, _ui.runLatestOnDesktopCheckBox, _ui.urlOnDesktopLineEdit, _ui.runNowPushbutton); + _testRunnerDesktop = new TestRunnerDesktop( + dayCheckboxes, + timeEditCheckboxes, + timeEdits, + _ui.workingFolderRunOnDesktopLabel, + _ui.checkBoxServerless, + _ui.runLatestOnDesktopCheckBox, + _ui.urlOnDesktopLineEdit, + _ui.runNowPushbutton + ); if (_testRunnerMobile) { delete _testRunnerMobile; } - _testRunnerMobile = new TestRunnerMobile(_ui.workingFolderRunOnMobileLabel, _ui.connectDevicePushbutton, _ui.pullFolderPushbutton, _ui.detectedDeviceLabel, _ui.folderLineEdit); + _testRunnerMobile = new TestRunnerMobile( + _ui.workingFolderRunOnMobileLabel, + _ui.connectDevicePushbutton, + _ui.pullFolderPushbutton, + _ui.detectedDeviceLabel, + _ui.folderLineEdit, + _ui.downloadAPKPushbutton + ); } void Nitpick::startTestsEvaluation(const bool isRunningFromCommandLine, @@ -285,7 +301,11 @@ void Nitpick::saveFile(int index) { _test->finishTestsEvaluation(); } else if (_caller == _testRunnerDesktop) { _testRunnerDesktop->downloadComplete(); + } else if (_caller == _testRunnerMobile) { + _testRunnerMobile->downloadComplete(); } + + _ui.progressBar->setVisible(false); } else { _ui.progressBar->setValue(_numberOfFilesDownloaded); } diff --git a/tools/nitpick/src/TestRunner.cpp b/tools/nitpick/src/TestRunner.cpp index 491e211e2c..3089b59e2c 100644 --- a/tools/nitpick/src/TestRunner.cpp +++ b/tools/nitpick/src/TestRunner.cpp @@ -11,6 +11,9 @@ #include +#include "Nitpick.h" +extern Nitpick* nitpick; + void TestRunner::setWorkingFolder(QLabel* workingFolderLabel) { // Everything will be written to this folder QString previousSelection = _workingFolder; @@ -31,6 +34,21 @@ void TestRunner::setWorkingFolder(QLabel* workingFolderLabel) { workingFolderLabel->setText(QDir::toNativeSeparators(_workingFolder)); } +void TestRunner::downloadBuildXml(void* caller) { + // Download the latest High Fidelity build XML. + // Note that this is not needed for PR builds (or whenever `Run Latest` is unchecked) + // It is still downloaded, to simplify the flow + buildXMLDownloaded = false; + + QStringList urls; + QStringList filenames; + + urls << DEV_BUILD_XML_URL; + filenames << DEV_BUILD_XML_FILENAME; + + nitpick->downloadFiles(urls, _workingFolder, filenames, caller); +} + void Worker::setCommandLine(const QString& commandLine) { _commandLine = commandLine; } diff --git a/tools/nitpick/src/TestRunner.h b/tools/nitpick/src/TestRunner.h index 338cb5524e..40f8a7d95a 100644 --- a/tools/nitpick/src/TestRunner.h +++ b/tools/nitpick/src/TestRunner.h @@ -19,9 +19,15 @@ class Worker; class TestRunner { public: void setWorkingFolder(QLabel* workingFolderLabel); + void downloadBuildXml(void* caller); protected: QString _workingFolder; + + const QString DEV_BUILD_XML_URL{ "https://highfidelity.com/dev-builds.xml" }; + const QString DEV_BUILD_XML_FILENAME{ "dev-builds.xml" }; + + bool buildXMLDownloaded; }; class Worker : public QObject { diff --git a/tools/nitpick/src/TestRunnerDesktop.cpp b/tools/nitpick/src/TestRunnerDesktop.cpp index f0147f200d..6ddf452b0a 100644 --- a/tools/nitpick/src/TestRunnerDesktop.cpp +++ b/tools/nitpick/src/TestRunnerDesktop.cpp @@ -13,14 +13,14 @@ #include #include -#include "Nitpick.h" -extern Nitpick* nitpick; - #ifdef Q_OS_WIN #include #include #endif +#include "Nitpick.h" +extern Nitpick* nitpick; + TestRunnerDesktop::TestRunnerDesktop(std::vector dayCheckboxes, std::vector timeEditCheckboxes, std::vector timeEdits, @@ -176,19 +176,8 @@ void TestRunnerDesktop::run() { // This will be restored at the end of the tests saveExistingHighFidelityAppDataFolder(); - // Download the latest High Fidelity build XML. - // Note that this is not needed for PR builds (or whenever `Run Latest` is unchecked) - // It is still downloaded, to simplify the flow - QStringList urls; - QStringList filenames; - - urls << DEV_BUILD_XML_URL; - filenames << DEV_BUILD_XML_FILENAME; - updateStatusLabel("Downloading Build XML"); - - buildXMLDownloaded = false; - nitpick->downloadFiles(urls, _workingFolder, filenames, (void*)this); + downloadBuildXml((void*)this); // `downloadComplete` will run after download has completed } diff --git a/tools/nitpick/src/TestRunnerDesktop.h b/tools/nitpick/src/TestRunnerDesktop.h index 1cc93c3ad5..467162da9f 100644 --- a/tools/nitpick/src/TestRunnerDesktop.h +++ b/tools/nitpick/src/TestRunnerDesktop.h @@ -102,10 +102,6 @@ private: QString _installerURL; QString _installerFilename; - const QString DEV_BUILD_XML_URL{ "https://highfidelity.com/dev-builds.xml" }; - const QString DEV_BUILD_XML_FILENAME{ "dev-builds.xml" }; - - bool buildXMLDownloaded; QDir _appDataFolder; QDir _savedAppDataFolder; diff --git a/tools/nitpick/src/TestRunnerMobile.cpp b/tools/nitpick/src/TestRunnerMobile.cpp index f27e161a87..a269c15b26 100644 --- a/tools/nitpick/src/TestRunnerMobile.cpp +++ b/tools/nitpick/src/TestRunnerMobile.cpp @@ -22,6 +22,7 @@ TestRunnerMobile::TestRunnerMobile( QPushButton *pullFolderButton, QLabel* detectedDeviceLabel, QLineEdit *folderLineEdit, + QPushButton* downloadAPKPushbutton, QObject* parent ) : QObject(parent) { @@ -30,6 +31,7 @@ TestRunnerMobile::TestRunnerMobile( _pullFolderButton = pullFolderButton; _detectedDeviceLabel = detectedDeviceLabel; _folderLineEdit = folderLineEdit; + _downloadAPKPushbutton = downloadAPKPushbutton; folderLineEdit->setText("/sdcard/DCIM/TEST"); } @@ -41,6 +43,7 @@ void TestRunnerMobile::setWorkingFolderAndEnableControls() { setWorkingFolder(_workingFolderLabel); _connectDeviceButton->setEnabled(true); + _downloadAPKPushbutton->setEnabled(true); // Find ADB (Android Debugging Bridge) before continuing #ifdef Q_OS_WIN @@ -70,7 +73,7 @@ void TestRunnerMobile::setWorkingFolderAndEnableControls() { void TestRunnerMobile::connectDevice() { QString devicesFullFilename{ _workingFolder + "/devices.txt" }; QString command = _adbCommand + " devices > " + devicesFullFilename; - int result = system(command.toStdString().c_str()); + system(command.toStdString().c_str()); if (!QFile::exists(devicesFullFilename)) { QMessageBox::critical(0, "Internal error", "devicesFullFilename not found"); @@ -99,9 +102,20 @@ void TestRunnerMobile::connectDevice() { } void TestRunnerMobile::downloadAPK() { + downloadBuildXml((void*)this); } + +void TestRunnerMobile::downloadComplete() { + if (!buildXMLDownloaded) { + // Download of Build XML has completed + buildXMLDownloaded = true; + + // Download the High Fidelity APK + int df = 546; + } +} void TestRunnerMobile::pullFolder() { QString command = _adbCommand + " pull " + _folderLineEdit->text() + " " + _workingFolder + " >" + _workingFolder + "/pullOutput.txt"; - int result = system(command.toStdString().c_str()); + system(command.toStdString().c_str()); } diff --git a/tools/nitpick/src/TestRunnerMobile.h b/tools/nitpick/src/TestRunnerMobile.h index 1f6b72cfd8..f0d79ae177 100644 --- a/tools/nitpick/src/TestRunnerMobile.h +++ b/tools/nitpick/src/TestRunnerMobile.h @@ -26,7 +26,8 @@ public: QPushButton *connectDeviceButton, QPushButton *pullFolderButton, QLabel* detectedDeviceLabel, - QLineEdit *folderLineEdit, + QLineEdit* folderLineEdit, + QPushButton* downloadAPKPushbutton, QObject* parent = 0 ); ~TestRunnerMobile(); @@ -34,6 +35,7 @@ public: void setWorkingFolderAndEnableControls(); void connectDevice(); void downloadAPK(); + void downloadComplete(); void pullFolder(); private: @@ -42,6 +44,7 @@ private: QPushButton* _pullFolderButton; QLabel* _detectedDeviceLabel; QLineEdit* _folderLineEdit; + QPushButton* _downloadAPKPushbutton; #ifdef Q_OS_WIN const QString _adbExe{ "adb.exe" };