aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2017-11-09 08:38:07 +0100
committerChristian Stenger <christian.stenger@qt.io>2017-11-09 11:24:04 +0000
commit938b3423a97a346ea23c26b7494f40d86a3addb8 (patch)
tree3185e92d192943b66054bed7727b66a331c0dd35 /src
parent5fabf9af64ea9a2e842434bb7711e9c0d16c30e3 (diff)
AutoTest: Ask for run configuration only if needed
If we cannot determine which executable to run we ask the user to specify which run configuration to use, but if there is only a single run configuration assume this one as correct and just pick it up without asking the user every time. Task-number: QTCREATORBUG-19200 Change-Id: Ie45cf354b595bc666a595f51844ad2453655e0da Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/autotest/testrunner.cpp61
1 files changed, 33 insertions, 28 deletions
diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp
index 4b95da0812..a49831d5a4 100644
--- a/src/plugins/autotest/testrunner.cpp
+++ b/src/plugins/autotest/testrunner.cpp
@@ -331,38 +331,40 @@ static QString firstTestCaseTarget(const TestConfiguration *config)
return TestRunner::tr("<unknown>");
}
-static bool askUserForRunConfiguration(TestConfiguration *config)
+static ProjectExplorer::RunConfiguration *getRunConfiguration(const QString &dialogDetail)
{
using namespace ProjectExplorer;
- RunConfigurationSelectionDialog dialog(firstTestCaseTarget(config),
- Core::ICore::dialogParent());
+ const Project *project = SessionManager::startupProject();
+ if (!project)
+ return nullptr;
+ const Target *target = project->activeTarget();
+ if (!target)
+ return nullptr;
+
+ RunConfiguration *runConfig = nullptr;
+ const QList<RunConfiguration *> runConfigurations
+ = Utils::filtered(target->runConfigurations(), [] (const RunConfiguration *rc) {
+ if (!rc->runnable().is<StandardRunnable>())
+ return false;
+ return !rc->runnable().as<StandardRunnable>().executable.isEmpty();
+ });
+ if (runConfigurations.size() == 1)
+ return runConfigurations.first();
+
+ RunConfigurationSelectionDialog dialog(dialogDetail, Core::ICore::dialogParent());
if (dialog.exec() == QDialog::Accepted) {
const QString dName = dialog.displayName();
if (dName.isEmpty())
- return false;
+ return nullptr;
// run configuration has been selected - fill config based on this one..
const QString exe = dialog.executable();
- // paranoia... can the current startup project have changed meanwhile?
- if (auto project = SessionManager::startupProject()) {
- if (auto target = project->activeTarget()) {
- RunConfiguration *runConfig
- = Utils::findOr(target->runConfigurations(), nullptr,
- [&dName, &exe] (const RunConfiguration *rc) {
- if (rc->displayName() != dName)
- return false;
- if (!rc->runnable().is<StandardRunnable>())
- return false;
- StandardRunnable runnable = rc->runnable().as<StandardRunnable>();
- return runnable.executable == exe;
- });
- if (runConfig) {
- config->setOriginalRunConfiguration(runConfig);
- return true;
- }
- }
- }
+ runConfig = Utils::findOr(runConfigurations, nullptr, [&dName, &exe] (const RunConfiguration *rc) {
+ if (rc->displayName() != dName)
+ return false;
+ return rc->runnable().as<StandardRunnable>().executable == exe;
+ });
}
- return false;
+ return runConfig;
}
void TestRunner::runTests()
@@ -370,9 +372,12 @@ void TestRunner::runTests()
QList<TestConfiguration *> toBeRemoved;
for (TestConfiguration *config : m_selectedTests) {
config->completeTestInformation(TestRunMode::Run);
- if (!config->hasExecutable())
- if (!askUserForRunConfiguration(config))
+ if (!config->hasExecutable()) {
+ if (auto rc = getRunConfiguration(firstTestCaseTarget(config)))
+ config->setOriginalRunConfiguration(rc);
+ else
toBeRemoved.append(config);
+ }
}
for (TestConfiguration *config : toBeRemoved)
m_selectedTests.removeOne(config);
@@ -427,8 +432,8 @@ void TestRunner::debugTests()
TestConfiguration *config = m_selectedTests.first();
config->completeTestInformation(TestRunMode::Debug);
if (!config->hasExecutable()) {
- if (askUserForRunConfiguration(config))
- config->completeTestInformation(config->originalRunConfiguration(), TestRunMode::Debug);
+ if (auto *rc = getRunConfiguration(firstTestCaseTarget(config)))
+ config->completeTestInformation(rc, TestRunMode::Debug);
}
if (!config->runConfiguration()) {