AbstractProcessStep: Merge virtual functions

Merge processSucceeded with processFinished into one virtual
function. Leave default implementation empty, so that
reimplementations don't need to call base impl. Move
processFinished into private section. Pass just one bool success
parameter into processFinished.

Change-Id: Ide3e262de0c0c5583c9fec2426fa460b6b74a49d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2022-12-02 11:33:28 +01:00
parent d8bd889eee
commit dfd079f050
8 changed files with 29 additions and 48 deletions

View File

@@ -613,10 +613,9 @@ QWidget *AndroidBuildApkStep::createConfigWidget()
return new AndroidBuildApkWidget(this); return new AndroidBuildApkWidget(this);
} }
void AndroidBuildApkStep::processFinished(int exitCode, QProcess::ExitStatus status) void AndroidBuildApkStep::processFinished(bool success)
{ {
AbstractProcessStep::processFinished(exitCode, status); if (m_openPackageLocationForRun && success)
if (m_openPackageLocationForRun && status == QProcess::NormalExit && exitCode == 0)
QTimer::singleShot(0, this, &AndroidBuildApkStep::showInGraphicalShell); QTimer::singleShot(0, this, &AndroidBuildApkStep::showInGraphicalShell);
} }

View File

@@ -62,7 +62,7 @@ private:
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
QWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
void processStarted() override; void processStarted() override;
void processFinished(int exitCode, QProcess::ExitStatus status) override; void processFinished(bool success) override;
bool verifyKeystorePassword(); bool verifyKeystorePassword();
bool verifyCertificatePassword(); bool verifyCertificatePassword();

View File

@@ -716,10 +716,10 @@ QString CMakeBuildStep::baseEnvironmentText() const
return Tr::tr("System Environment"); return Tr::tr("System Environment");
} }
void CMakeBuildStep::processFinished(int exitCode, QProcess::ExitStatus status) void CMakeBuildStep::processFinished(bool success)
{ {
AbstractProcessStep::processFinished(exitCode, status); Q_UNUSED(success)
emit progress(100, QString()); emit progress(100, {});
} }
// CMakeBuildStepFactory // CMakeBuildStepFactory

View File

@@ -77,7 +77,7 @@ signals:
private: private:
Utils::CommandLine cmakeCommand() const; Utils::CommandLine cmakeCommand() const;
void processFinished(int exitCode, QProcess::ExitStatus status) override; void processFinished(bool success) override;
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
bool init() override; bool init() override;

View File

@@ -4,13 +4,9 @@
#include "abstractprocessstep.h" #include "abstractprocessstep.h"
#include "buildconfiguration.h" #include "buildconfiguration.h"
#include "buildstep.h" #include "buildstep.h"
#include "ioutputparser.h"
#include "processparameters.h" #include "processparameters.h"
#include "project.h"
#include "projectexplorer.h" #include "projectexplorer.h"
#include "projectexplorersettings.h" #include "projectexplorersettings.h"
#include "target.h"
#include "task.h"
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
@@ -262,14 +258,25 @@ bool AbstractProcessStep::setupProcessParameters(ProcessParameters *params) cons
void AbstractProcessStep::Private::cleanUp(int exitCode, QProcess::ExitStatus status) void AbstractProcessStep::Private::cleanUp(int exitCode, QProcess::ExitStatus status)
{ {
// The process has finished, leftover data was read in handleProcessDone const QString command = m_param.effectiveCommand().toUserOutput();
q->processFinished(exitCode, status); if (status == QProcess::NormalExit && exitCode == 0) {
const bool returnValue = q->processSucceeded(exitCode, status) || m_ignoreReturnValue; emit q->addOutput(tr("The process \"%1\" exited normally.").arg(command),
BuildStep::OutputFormat::NormalMessage);
} else if (status == QProcess::NormalExit) {
emit q->addOutput(tr("The process \"%1\" exited with code %2.")
.arg(command, QString::number(exitCode)),
BuildStep::OutputFormat::ErrorMessage);
} else {
emit q->addOutput(tr("The process \"%1\" crashed.").arg(command),
BuildStep::OutputFormat::ErrorMessage);
}
const bool success = exitCode == 0 && status == QProcess::NormalExit
&& !outputFormatter->hasFatalErrors();
q->processFinished(success);
if (m_process) if (m_process)
m_process.release()->deleteLater(); m_process.release()->deleteLater();
q->finish(success || m_ignoreReturnValue);
q->finish(returnValue);
} }
/*! /*!
@@ -293,19 +300,9 @@ void AbstractProcessStep::processStarted()
The default implementation adds a line to the output window. The default implementation adds a line to the output window.
*/ */
void AbstractProcessStep::processFinished(int exitCode, QProcess::ExitStatus status) void AbstractProcessStep::processFinished(bool success)
{ {
const QString command = d->m_param.effectiveCommand().toUserOutput(); Q_UNUSED(success)
if (status == QProcess::NormalExit && exitCode == 0) {
emit addOutput(tr("The process \"%1\" exited normally.").arg(command),
BuildStep::OutputFormat::NormalMessage);
} else if (status == QProcess::NormalExit) {
emit addOutput(tr("The process \"%1\" exited with code %2.")
.arg(command, QString::number(exitCode)),
BuildStep::OutputFormat::ErrorMessage);
} else {
emit addOutput(tr("The process \"%1\" crashed.").arg(command), BuildStep::OutputFormat::ErrorMessage);
}
} }
/*! /*!
@@ -327,18 +324,6 @@ void AbstractProcessStep::processStartupFailed()
finish(false); finish(false);
} }
/*!
Called to test whether a process succeeded or not.
*/
bool AbstractProcessStep::processSucceeded(int exitCode, QProcess::ExitStatus status)
{
if (d->outputFormatter->hasFatalErrors())
return false;
return exitCode == 0 && status == QProcess::NormalExit;
}
void AbstractProcessStep::processReadyReadStdOutput() void AbstractProcessStep::processReadyReadStdOutput()
{ {
QTC_ASSERT(d->m_process.get(), return); QTC_ASSERT(d->m_process.get(), return);

View File

@@ -45,13 +45,12 @@ protected:
virtual void finish(bool success); virtual void finish(bool success);
virtual void processStarted(); virtual void processStarted();
virtual void processFinished(int exitCode, QProcess::ExitStatus status);
virtual void processStartupFailed(); virtual void processStartupFailed();
virtual bool processSucceeded(int exitCode, QProcess::ExitStatus status);
virtual void stdOutput(const QString &output); virtual void stdOutput(const QString &output);
virtual void stdError(const QString &output); virtual void stdError(const QString &output);
private: private:
virtual void processFinished(bool success);
void processReadyReadStdOutput(); void processReadyReadStdOutput();
void processReadyReadStdError(); void processReadyReadStdError();
void handleProcessDone(); void handleProcessDone();

View File

@@ -300,13 +300,11 @@ void QMakeStep::processStartupFailed()
AbstractProcessStep::processStartupFailed(); AbstractProcessStep::processStartupFailed();
} }
bool QMakeStep::processSucceeded(int exitCode, QProcess::ExitStatus status) void QMakeStep::processFinished(bool success)
{ {
bool result = AbstractProcessStep::processSucceeded(exitCode, status); if (!success)
if (!result)
m_needToRunQMake = true; m_needToRunQMake = true;
emit buildConfiguration()->buildDirectoryInitialized(); emit buildConfiguration()->buildDirectoryInitialized();
return result;
} }
void QMakeStep::finish(bool success) void QMakeStep::finish(bool success)

View File

@@ -138,10 +138,10 @@ public:
protected: protected:
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
void processStartupFailed() override; void processStartupFailed() override;
bool processSucceeded(int exitCode, QProcess::ExitStatus status) override;
private: private:
void finish(bool success) override; void finish(bool success) override;
void processFinished(bool success) override;
void startOneCommand(const Utils::CommandLine &command); void startOneCommand(const Utils::CommandLine &command);
void runNextCommand(); void runNextCommand();