summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/autotest/testrunner.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/plugins/autotest/testrunner.cpp b/plugins/autotest/testrunner.cpp
index 29e5476ce3..07f90a56ad 100644
--- a/plugins/autotest/testrunner.cpp
+++ b/plugins/autotest/testrunner.cpp
@@ -191,6 +191,9 @@ void TestRunner::runTests()
const QString metricsOption = TestSettings::metricsTypeToOption(settings->metrics);
const bool displayRunConfigWarnings = !settings->omitRunConfigWarn;
+ m_executingTests = true;
+ emit testRunStarted();
+
// clear old log and output pane
TestResultsPane::instance()->clearContents();
@@ -218,6 +221,7 @@ void TestRunner::runTests()
if (m_selectedTests.empty()) {
TestResultsPane::instance()->addTestResult(FaultyTestResult(Result::MESSAGE_WARN,
tr("No tests selected. Canceling test run.")));
+ onFinished();
return;
}
@@ -227,6 +231,7 @@ void TestRunner::runTests()
tr("Project is null. Canceling test run.\n"
"Only desktop kits are supported. Make sure the "
"currently active kit is a desktop kit.")));
+ onFinished();
return;
}
@@ -236,27 +241,33 @@ void TestRunner::runTests()
if (!project->hasActiveBuildSettings()) {
TestResultsPane::instance()->addTestResult(FaultyTestResult(Result::MESSAGE_FATAL,
tr("Project is not configured. Canceling test run.")));
+ onFinished();
return;
}
+
+ auto connection = connect(this, &TestRunner::requestStopTestRun, [&] () {
+ ProjectExplorer::BuildManager::instance()->cancel();
+ m_building = false;
+ m_buildSucceeded = false;
+ });
buildProject(project);
while (m_building) {
qApp->processEvents();
}
+ disconnect(connection);
if (!m_buildSucceeded) {
TestResultsPane::instance()->addTestResult(FaultyTestResult(Result::MESSAGE_FATAL,
tr("Build failed. Canceling test run.")));
+ onFinished();
return;
}
}
- m_executingTests = true;
connect(this, &TestRunner::testResultCreated,
TestResultsPane::instance(), &TestResultsPane::addTestResult,
Qt::QueuedConnection);
- emit testRunStarted();
-
QFuture<void> future = QtConcurrent::run(&performTestRun, m_selectedTests, timeout, metricsOption, this);
Core::FutureProgress *progress = Core::ProgressManager::addTask(future, tr("Running Tests"),
Autotest::Constants::TASK_INDEX);
@@ -268,8 +279,7 @@ void TestRunner::buildProject(ProjectExplorer::Project *project)
{
m_building = true;
m_buildSucceeded = false;
- ProjectExplorer::BuildManager *buildManager = static_cast<ProjectExplorer::BuildManager *>(
- ProjectExplorer::BuildManager::instance());
+ ProjectExplorer::BuildManager *buildManager = ProjectExplorer::BuildManager::instance();
connect(buildManager, &ProjectExplorer::BuildManager::buildQueueFinished,
this, &TestRunner::buildFinished);
ProjectExplorer::ProjectExplorerPlugin::buildProject(project);
@@ -277,8 +287,7 @@ void TestRunner::buildProject(ProjectExplorer::Project *project)
void TestRunner::buildFinished(bool success)
{
- ProjectExplorer::BuildManager *buildManager = static_cast<ProjectExplorer::BuildManager *>(
- ProjectExplorer::BuildManager::instance());
+ ProjectExplorer::BuildManager *buildManager = ProjectExplorer::BuildManager::instance();
disconnect(buildManager, &ProjectExplorer::BuildManager::buildQueueFinished,
this, &TestRunner::buildFinished);
m_building = false;