Use QtcProcess inside CMakeBuildSystem::runCTest()

Change-Id: Ica83a8f43b34e21c379326e8dbd51d009dd2fd44
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2021-08-09 16:42:39 +02:00
parent b80624611b
commit 03c68e3840

View File

@@ -60,6 +60,7 @@
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/mimetypes/mimetype.h> #include <utils/mimetypes/mimetype.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/runextensions.h> #include <utils/runextensions.h>
#include <QClipboard> #include <QClipboard>
@@ -918,14 +919,15 @@ void CMakeBuildSystem::runCTest()
const CommandLine cmd { m_ctestPath, { "-N", "--show-only=json-v1" } }; const CommandLine cmd { m_ctestPath, { "-N", "--show-only=json-v1" } };
const QString workingDirectory = buildDirectory(parameters).toString(); const QString workingDirectory = buildDirectory(parameters).toString();
const QStringList environment = cmakeBuildConfiguration()->environment().toStringList(); const Environment environment = cmakeBuildConfiguration()->environment();
auto future = Utils::runAsync([cmd, workingDirectory, environment] auto future = Utils::runAsync([cmd, workingDirectory, environment]
(QFutureInterface<QByteArray> &futureInterface) { (QFutureInterface<QByteArray> &futureInterface) {
QProcess process; QtcProcess process;
process.setEnvironment(environment); process.setEnvironment(environment);
process.setWorkingDirectory(workingDirectory); process.setWorkingDirectory(workingDirectory);
process.start(cmd.executable().toString(), cmd.splitArguments(), QIODevice::ReadOnly); process.setCommand(cmd);
process.start();
if (!process.waitForStarted(1000) || !process.waitForFinished()) { if (!process.waitForStarted(1000) || !process.waitForFinished()) {
if (process.state() == QProcess::NotRunning) if (process.state() == QProcess::NotRunning)