From a4a651aa32d882e7232ea8d8f34ec6df84c03702 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 14 Apr 2022 08:50:16 +0200 Subject: [PATCH] QtcProcess: Fix StartFailed result Amends 4ca336762eaff6a4dac30f73803bac20d4aa7898 Change-Id: I3781bec37b17ea3f86eedc51657db0931a456c39 Reviewed-by: hjk Reviewed-by: --- src/libs/utils/qtcprocess.cpp | 20 ++++++++++--------- .../auto/utils/qtcprocess/tst_qtcprocess.cpp | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 36758d74c63..4324e0a0eb7 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -1609,15 +1609,17 @@ void QtcProcessPrivate::handleDone(const ProcessResultData &data) qDebug() << Q_FUNC_INFO << m_resultData.m_exitCode << m_resultData.m_exitStatus; m_hangTimerCount = 0; - switch (m_resultData.m_exitStatus) { - case QProcess::NormalExit: - m_result = interpretExitCode(m_resultData.m_exitCode); - break; - case QProcess::CrashExit: - // Was hang detected before and killed? - if (m_result != ProcessResult::Hang) - m_result = ProcessResult::TerminatedAbnormally; - break; + if (m_resultData.m_error != QProcess::FailedToStart) { + switch (m_resultData.m_exitStatus) { + case QProcess::NormalExit: + m_result = interpretExitCode(m_resultData.m_exitCode); + break; + case QProcess::CrashExit: + // Was hang detected before and killed? + if (m_result != ProcessResult::Hang) + m_result = ProcessResult::TerminatedAbnormally; + break; + } } if (m_eventLoop) m_eventLoop->quit(); diff --git a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp index cffa22fbd04..3a3d01e20e1 100644 --- a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp +++ b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp @@ -1007,6 +1007,7 @@ void tst_QtcProcess::notRunningAfterStartingNonExistingProgram() QCOMPARE(process.exitStatus(), QProcess::NormalExit); QCOMPARE(process.error(), QProcess::FailedToStart); QVERIFY(process.exitCode() != 0); + QCOMPARE(process.result(), ProcessResult::StartFailed); } }