AutoTest: Guard against nullptr access

Change-Id: I15e5d769b7a4b30421f52fbbe380ca7f19214b42
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2018-06-20 15:58:28 +02:00
parent 2e6177fe86
commit 3568f23e7e

View File

@@ -216,7 +216,8 @@ void TestRunner::scheduleNext()
void TestRunner::cancelCurrent(TestRunner::CancelReason reason) void TestRunner::cancelCurrent(TestRunner::CancelReason reason)
{ {
if (reason == UserCanceled) { if (reason == UserCanceled) {
if (!m_fakeFutureInterface->isCanceled()) // depends on using the button / progress bar // when using the stop button we need to report, for progress bar this happens automatically
if (m_fakeFutureInterface && !m_fakeFutureInterface->isCanceled())
m_fakeFutureInterface->reportCanceled(); m_fakeFutureInterface->reportCanceled();
} }
if (m_currentProcess && m_currentProcess->state() != QProcess::NotRunning) { if (m_currentProcess && m_currentProcess->state() != QProcess::NotRunning) {
@@ -231,22 +232,23 @@ void TestRunner::cancelCurrent(TestRunner::CancelReason reason)
void TestRunner::onProcessFinished() void TestRunner::onProcessFinished()
{ {
m_fakeFutureInterface->setProgressValue(m_fakeFutureInterface->progressValue() if (m_currentConfig) {
+ m_currentConfig->testCaseCount()); m_fakeFutureInterface->setProgressValue(m_fakeFutureInterface->progressValue()
if (!m_fakeFutureInterface->isCanceled()) { + m_currentConfig->testCaseCount());
if (m_currentProcess->exitStatus() == QProcess::CrashExit) { if (!m_fakeFutureInterface->isCanceled()) {
m_currentOutputReader->reportCrash(); if (m_currentProcess->exitStatus() == QProcess::CrashExit) {
emit testResultReady(TestResultPtr(new FaultyTestResult(Result::MessageFatal, m_currentOutputReader->reportCrash();
tr("Test for project \"%1\" crashed.").arg(m_currentConfig->displayName()) emit testResultReady(TestResultPtr(new FaultyTestResult(Result::MessageFatal,
+ processInformation(m_currentProcess) + rcInfo(m_currentConfig)))); tr("Test for project \"%1\" crashed.").arg(m_currentConfig->displayName())
} else if (!m_currentOutputReader->hadValidOutput()) { + processInformation(m_currentProcess) + rcInfo(m_currentConfig))));
emit testResultReady(TestResultPtr(new FaultyTestResult(Result::MessageFatal, } else if (!m_currentOutputReader->hadValidOutput()) {
tr("Test for project \"%1\" did not produce any expected output.") emit testResultReady(TestResultPtr(new FaultyTestResult(Result::MessageFatal,
tr("Test for project \"%1\" did not produce any expected output.")
.arg(m_currentConfig->displayName()) + processInformation(m_currentProcess) .arg(m_currentConfig->displayName()) + processInformation(m_currentProcess)
+ rcInfo(m_currentConfig)))); + rcInfo(m_currentConfig))));
}
} }
} }
resetInternalPointers(); resetInternalPointers();
if (!m_selectedTests.isEmpty() && !m_fakeFutureInterface->isCanceled()) if (!m_selectedTests.isEmpty() && !m_fakeFutureInterface->isCanceled())