From ec86b127246d2a0f33c72f622583e9a8a9865d9d Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 4 Jul 2022 09:25:46 +0200 Subject: [PATCH] Squish: Modernize SquishTools Change-Id: I8b9394b95d0e9fe8e054c66df58436aef2ddfb05 Reviewed-by: David Schulz --- src/plugins/squish/squishtools.cpp | 66 +++++++++++------------------- src/plugins/squish/squishtools.h | 29 +++++++------ 2 files changed, 40 insertions(+), 55 deletions(-) diff --git a/src/plugins/squish/squishtools.cpp b/src/plugins/squish/squishtools.cpp index a4b83b9e247..b4f4d097b8e 100644 --- a/src/plugins/squish/squishtools.cpp +++ b/src/plugins/squish/squishtools.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -55,15 +56,6 @@ static const QString resultsDirectory = QFileInfo(QDir::home(), ".squishQC/Test SquishTools::SquishTools(QObject *parent) : QObject(parent) - , m_serverProcess(nullptr) - , m_runnerProcess(nullptr) - , m_serverPort(-1) - , m_request(None) - , m_state(Idle) - , m_currentResultsXML(nullptr) - , m_resultsFileWatcher(nullptr) - , m_testRunning(false) - , m_xmlOutputHandler(nullptr) { SquishOutputPane *outputPane = SquishOutputPane::instance(); connect(this, @@ -330,8 +322,7 @@ void SquishTools::startSquishServer(Request request) else m_lastTopLevelWindows.clear(); - m_serverProcess = new QProcess; - m_serverProcess->setProgram(toolsSettings.serverPath); + m_serverProcess = new Utils::QtcProcess; QStringList arguments; // TODO if isLocalServer is false we should start a squishserver on remote device if (toolsSettings.isLocalServer) @@ -341,18 +332,15 @@ void SquishTools::startSquishServer(Request request) if (toolsSettings.verboseLog) arguments << "--verbose"; - m_serverProcess->setArguments(arguments); - m_serverProcess->setProcessEnvironment(squishEnvironment()); + m_serverProcess->setCommand({Utils::FilePath::fromString(toolsSettings.serverPath), arguments}); + m_serverProcess->setEnvironment(squishEnvironment()); - connect(m_serverProcess, &QProcess::readyReadStandardOutput, this, &SquishTools::onServerOutput); - connect(m_serverProcess, - &QProcess::readyReadStandardError, - this, - &SquishTools::onServerErrorOutput); - connect(m_serverProcess, - QOverload::of(&QProcess::finished), - this, - &SquishTools::onServerFinished); + connect(m_serverProcess, &Utils::QtcProcess::readyReadStandardOutput, + this, &SquishTools::onServerOutput); + connect(m_serverProcess, &Utils::QtcProcess::readyReadStandardError, + this, &SquishTools::onServerErrorOutput); + connect(m_serverProcess, &Utils::QtcProcess::done, + this, &SquishTools::onServerFinished); setState(ServerStarting); m_serverProcess->start(); @@ -365,12 +353,11 @@ void SquishTools::startSquishServer(Request request) void SquishTools::stopSquishServer() { if (m_serverProcess && m_serverPort > 0) { - QProcess serverKiller; - serverKiller.setProgram(m_serverProcess->program()); + Utils::QtcProcess serverKiller; QStringList args; args << "--stop" << "--port" << QString::number(m_serverPort); - serverKiller.setArguments(args); - serverKiller.setProcessEnvironment(m_serverProcess->processEnvironment()); + serverKiller.setCommand({m_serverProcess->commandLine().executable(), args}); + serverKiller.setEnvironment(m_serverProcess->environment()); serverKiller.start(); if (serverKiller.waitForStarted()) { if (!serverKiller.waitForFinished()) { @@ -437,7 +424,7 @@ void SquishTools::startSquishRunner() } toolsSettings.runnerPath = squishRunner.toString(); - m_runnerProcess = new QProcess; + m_runnerProcess = new Utils::QtcProcess; QStringList args; args << m_additionalServerArguments; @@ -462,18 +449,13 @@ void SquishTools::startSquishRunner() args << "--reportgen" << QString::fromLatin1("xml2.2,%1").arg(caseReportFilePath); - m_runnerProcess->setProgram(toolsSettings.runnerPath); - m_runnerProcess->setArguments(args); - m_runnerProcess->setProcessEnvironment(squishEnvironment()); + m_runnerProcess->setCommand({Utils::FilePath::fromString(toolsSettings.runnerPath), args}); + m_runnerProcess->setEnvironment(squishEnvironment()); - connect(m_runnerProcess, - &QProcess::readyReadStandardError, - this, - &SquishTools::onRunnerErrorOutput); - connect(m_runnerProcess, - QOverload::of(&QProcess::finished), - this, - &SquishTools::onRunnerFinished); + connect(m_runnerProcess, &Utils::QtcProcess::readyReadStandardError, + this, &SquishTools::onRunnerErrorOutput); + connect(m_runnerProcess, &Utils::QtcProcess::done, + this, &SquishTools::onRunnerFinished); setState(RunnerStarting); @@ -505,16 +487,16 @@ void SquishTools::startSquishRunner() m_currentResultsXML = new QFile(caseReportFilePath); } -QProcessEnvironment SquishTools::squishEnvironment() +Utils::Environment SquishTools::squishEnvironment() { Utils::Environment environment = Utils::Environment::systemEnvironment(); if (!toolsSettings.licenseKeyPath.isEmpty()) environment.prependOrSet("SQUISH_LICENSEKEY_DIR", toolsSettings.licenseKeyPath); environment.prependOrSet("SQUISH_PREFIX", toolsSettings.squishPath); - return environment.toProcessEnvironment(); + return environment; } -void SquishTools::onServerFinished(int, QProcess::ExitStatus) +void SquishTools::onServerFinished() { delete m_serverProcess; m_serverProcess = nullptr; @@ -522,7 +504,7 @@ void SquishTools::onServerFinished(int, QProcess::ExitStatus) setState(ServerStopped); } -void SquishTools::onRunnerFinished(int, QProcess::ExitStatus) +void SquishTools::onRunnerFinished() { delete m_runnerProcess; m_runnerProcess = nullptr; diff --git a/src/plugins/squish/squishtools.h b/src/plugins/squish/squishtools.h index 1cbc394a6f3..22b519b5850 100644 --- a/src/plugins/squish/squishtools.h +++ b/src/plugins/squish/squishtools.h @@ -25,8 +25,9 @@ #pragma once +#include + #include -#include #include #include @@ -35,6 +36,8 @@ class QFile; class QFileSystemWatcher; QT_END_NAMESPACE +namespace Utils { class QtcProcess; } + namespace Squish { namespace Internal { @@ -88,9 +91,9 @@ private: void startSquishServer(Request request); void stopSquishServer(); void startSquishRunner(); - static QProcessEnvironment squishEnvironment(); - Q_SLOT void onServerFinished(int exitCode, QProcess::ExitStatus status = QProcess::NormalExit); - Q_SLOT void onRunnerFinished(int exitCode, QProcess::ExitStatus status = QProcess::NormalExit); + static Utils::Environment squishEnvironment(); + void onServerFinished(); + void onRunnerFinished(); void onServerOutput(); void onServerErrorOutput(); void onRunnerOutput(); @@ -100,24 +103,24 @@ private: void minimizeQtCreatorWindows(); void restoreQtCreatorWindows(); - QProcess *m_serverProcess; - QProcess *m_runnerProcess; - int m_serverPort; + Utils::QtcProcess *m_serverProcess = nullptr; + Utils::QtcProcess *m_runnerProcess = nullptr; + int m_serverPort = -1; QString m_serverHost; - Request m_request; - State m_state; + Request m_request = None; + State m_state = Idle; QString m_suitePath; QStringList m_testCases; QStringList m_reportFiles; QString m_currentResultsDirectory; - QFile *m_currentResultsXML; - QFileSystemWatcher *m_resultsFileWatcher; + QFile *m_currentResultsXML = nullptr; + QFileSystemWatcher *m_resultsFileWatcher = nullptr; QStringList m_additionalServerArguments; QStringList m_additionalRunnerArguments; QWindowList m_lastTopLevelWindows; - bool m_testRunning; + bool m_testRunning = false; qint64 m_readResultsCount; - SquishXmlOutputHandler *m_xmlOutputHandler; + SquishXmlOutputHandler *m_xmlOutputHandler = nullptr; }; } // namespace Internal