diff --git a/src/plugins/squish/squishrunnerprocess.h b/src/plugins/squish/squishrunnerprocess.h index b3200eb89d9..b1c98220c17 100644 --- a/src/plugins/squish/squishrunnerprocess.h +++ b/src/plugins/squish/squishrunnerprocess.h @@ -35,6 +35,8 @@ public: void requestExpanded(const QString &variableName); Utils::Links setBreakpoints(const QString &scriptExtension); + bool lastRunHadLicenseIssues() const { return m_licenseIssues; } + signals: void queryDone(const QString &output, const QString &error); void recorderDone(); diff --git a/src/plugins/squish/squishtools.cpp b/src/plugins/squish/squishtools.cpp index 107a3c6bfab..58be2a78c30 100644 --- a/src/plugins/squish/squishtools.cpp +++ b/src/plugins/squish/squishtools.cpp @@ -452,6 +452,10 @@ void SquishTools::onRunnerStopped() m_request = ServerStopRequested; qCInfo(LOG) << "Stopping server from RunnerStopped"; stopSquishServer(); + if (QTC_GUARD(m_primaryRunner) && m_primaryRunner->lastRunHadLicenseIssues()) { + SquishMessages::criticalMessage(Tr::tr("Could not get Squish license from server.")); + return; + } QString error; SquishXmlOutputHandler::mergeResultFiles(m_reportFiles, m_currentResultsDirectory, @@ -461,6 +465,13 @@ void SquishTools::onRunnerStopped() SquishMessages::criticalMessage(error); logrotateTestResults(); } else { + if (QTC_GUARD(m_primaryRunner) && m_primaryRunner->lastRunHadLicenseIssues()) { + m_request = ServerStopRequested; + qCInfo(LOG) << "Stopping server from RunnerStopped (multiple testcases, no license)"; + stopSquishServer(); + SquishMessages::criticalMessage(Tr::tr("Could not get Squish license from server.")); + return; + } m_xmlOutputHandler->clearForNextRun(); m_perspective.setPerspectiveMode(SquishPerspective::Running); logAndChangeRunnerState(RunnerState::Starting);