From 6b83d9878849d38bbbaeaf7f9b7a1ad465b66be8 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Mon, 3 Sep 2018 15:50:52 -0700 Subject: [PATCH] Can run installer, but does not wait for completion. --- tools/auto-tester/src/TestRunner.cpp | 34 +++++++++++++++++++++------- tools/auto-tester/src/TestRunner.h | 17 ++++++++++---- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/tools/auto-tester/src/TestRunner.cpp b/tools/auto-tester/src/TestRunner.cpp index 407b8333a6..688ab849d3 100644 --- a/tools/auto-tester/src/TestRunner.cpp +++ b/tools/auto-tester/src/TestRunner.cpp @@ -19,6 +19,12 @@ TestRunner::TestRunner(QObject *parent) : QObject(parent) { } void TestRunner::run() { + selectTemporaryFolder(); + runInstaller(); + + + + saveExistingHighFidelityAppDataFolder(); selectTemporaryFolder(); @@ -26,7 +32,7 @@ void TestRunner::run() { urls << "http://builds.highfidelity.com/HighFidelity-Beta-latest-dev.exe"; QStringList filenames; - filenames << "HighFidelity-Beta-latest-dev.exe"; + filenames << _installerFilename; autoTester->downloadFiles(urls, _tempDirectory, filenames, (void *)this); @@ -34,9 +40,21 @@ void TestRunner::run() { } void TestRunner::installerDownloadComplete() { + runInstaller(); + restoreHighFidelityAppDataFolder(); } +void TestRunner::runInstaller() { + QProcess installProcess; + + QStringList arguments{ QStringList() << QString("/S") << QString("/D=") + QDir::toNativeSeparators(_tempDirectory) }; + + QString installerFullPath = _tempDirectory + "/" + _installerFilename; + qint64 pid; + QProcess::startDetached(installerFullPath, arguments, QString(), &pid); +} + void TestRunner::saveExistingHighFidelityAppDataFolder() { QString dataDirectory{ "NOT FOUND" }; @@ -44,25 +62,25 @@ void TestRunner::saveExistingHighFidelityAppDataFolder() { dataDirectory = qgetenv("USERPROFILE") + "\\AppData\\Roaming"; #endif - appDataFolder = dataDirectory + "\\High Fidelity"; + _appDataFolder = dataDirectory + "\\High Fidelity"; - if (!appDataFolder.exists()) { + if (!_appDataFolder.exists()) { QMessageBox::critical(0, "Internal error: " + QString(__FILE__) + ":" + QString::number(__LINE__), "The High Fidelity data folder was not found in " + dataDirectory); exit(-1); } // The original folder is saved in a unique name - savedAppDataFolder = dataDirectory + "/fgadhcUDHSFaidsfh3478JJJFSDFIUSOEIrf"; - appDataFolder.rename(QDir::fromNativeSeparators(appDataFolder.path()), QDir::toNativeSeparators(savedAppDataFolder.path())); + _savedAppDataFolder = dataDirectory + "/" + _uniqueFolderName; + _appDataFolder.rename(_appDataFolder.path(), _savedAppDataFolder.path()); - QDir().mkdir(appDataFolder.path()); + QDir().mkdir(_appDataFolder.path()); } void TestRunner::restoreHighFidelityAppDataFolder() { - QDir().rmdir(appDataFolder.path()); + QDir().rmdir(_appDataFolder.path()); - appDataFolder.rename(QDir::fromNativeSeparators(savedAppDataFolder.path()), QDir::toNativeSeparators(appDataFolder.path())); + _appDataFolder.rename(_savedAppDataFolder.path(), _appDataFolder.path()); } void TestRunner::selectTemporaryFolder() { diff --git a/tools/auto-tester/src/TestRunner.h b/tools/auto-tester/src/TestRunner.h index 444dea74cf..e9cd8bbfc0 100644 --- a/tools/auto-tester/src/TestRunner.h +++ b/tools/auto-tester/src/TestRunner.h @@ -15,26 +15,33 @@ #include #include "Downloader.h" +#include "ui/BusyWindow.h" class TestRunner : public QObject { -Q_OBJECT + Q_OBJECT public: - explicit TestRunner(QObject *parent = 0); + explicit TestRunner(QObject* parent = 0); void run(); void installerDownloadComplete(); + void runInstaller(); void saveExistingHighFidelityAppDataFolder(); void restoreHighFidelityAppDataFolder(); void selectTemporaryFolder(); private: - QDir appDataFolder; - QDir savedAppDataFolder; + QDir _appDataFolder; + QDir _savedAppDataFolder; QString _tempDirectory; Downloader* _downloader; + + const QString _uniqueFolderName{ "fgadhcUDHSFaidsfh3478JJJFSDFIUSOEIrf" }; + const QString _installerFilename{ "HighFidelity-Beta-latest-dev.exe" }; + + BusyWindow _busyWindow; }; -#endif // hifi_testRunner_h \ No newline at end of file +#endif // hifi_testRunner_h \ No newline at end of file