From 8562abbb567c21e34d222c6dc024b4a3f046521f Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 23 Jun 2016 07:34:53 +0200 Subject: [PATCH] AutoTest: Avoid crash when accessing uninitialized runnable Change-Id: I87bbf5b824a693a2c8d653bf5093e088f01b84b5 Reviewed-by: David Schulz --- src/plugins/autotest/testconfiguration.cpp | 2 +- src/plugins/autotest/testrunconfiguration.h | 27 ++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/plugins/autotest/testconfiguration.cpp b/src/plugins/autotest/testconfiguration.cpp index f5c24c49bb4..db39b91bbaf 100644 --- a/src/plugins/autotest/testconfiguration.cpp +++ b/src/plugins/autotest/testconfiguration.cpp @@ -187,7 +187,7 @@ void TestConfiguration::completeTestInformation(int runMode) setProject(project); setGuessedConfiguration(guessedRunConfiguration); if (!guessedRunConfiguration && runMode == TestRunner::Debug) - m_runConfig = new TestRunConfiguration(runConfigTarget); + m_runConfig = new TestRunConfiguration(runConfigTarget, this); } } diff --git a/src/plugins/autotest/testrunconfiguration.h b/src/plugins/autotest/testrunconfiguration.h index ef471fc2369..1ed3d2b0eea 100644 --- a/src/plugins/autotest/testrunconfiguration.h +++ b/src/plugins/autotest/testrunconfiguration.h @@ -25,7 +25,15 @@ #pragma once +#include "autotestplugin.h" +#include "testconfiguration.h" + +#include +#include +#include #include +#include +#include namespace Autotest { namespace Internal { @@ -33,15 +41,32 @@ namespace Internal { class TestRunConfiguration : public ProjectExplorer::RunConfiguration { public: - TestRunConfiguration(ProjectExplorer::Target *parent) + TestRunConfiguration(ProjectExplorer::Target *parent, TestConfiguration *config) : ProjectExplorer::RunConfiguration(parent, "AutoTest.TestRunConfig") { setDefaultDisplayName(tr("AutoTest Debug")); addExtraAspects(); + m_testConfig = config; + } + + ProjectExplorer::Runnable runnable() const override + { + ProjectExplorer::StandardRunnable r; + QTC_ASSERT(m_testConfig, return r); + r.executable = m_testConfig->targetFile(); + r.commandLineArguments = m_testConfig->argumentsForTestRunner( + *AutotestPlugin::instance()->settings()).join(' '); + r.workingDirectory = m_testConfig->workingDirectory(); + r.environment = m_testConfig->environment(); + r.runMode = ProjectExplorer::ApplicationLauncher::Gui; + r.device = ProjectExplorer::DeviceManager::instance()->defaultDevice( + ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); + return r; } private: QWidget *createConfigurationWidget() { return 0; } + TestConfiguration *m_testConfig = 0; }; } // namespace Internal