From 8accfddb17526ecab910123f2bc91c2cf66646f4 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 16 Jan 2018 08:41:53 +0100 Subject: [PATCH] AutoTest: Delegate reporting crashes to output reader Let the output reader report crashes of the test instead of just reporting crashes globally. This allows to reflect the crash also inside summary items to avoid having tests displayed as passed if no fail happened until the crash. Task-number: QTCREATORBUG-19565 Change-Id: Idd9fe28f7486cbb31b1aa6556530718a2278722f Reviewed-by: Christian Stenger --- src/plugins/autotest/testoutputreader.cpp | 8 ++++++++ src/plugins/autotest/testoutputreader.h | 1 + src/plugins/autotest/testrunner.cpp | 1 + 3 files changed, 10 insertions(+) diff --git a/src/plugins/autotest/testoutputreader.cpp b/src/plugins/autotest/testoutputreader.cpp index b17af8ec739..c4215b68521 100644 --- a/src/plugins/autotest/testoutputreader.cpp +++ b/src/plugins/autotest/testoutputreader.cpp @@ -66,6 +66,14 @@ void TestOutputReader::processStdError(const QByteArray &output) qWarning() << "AutoTest.Run: Ignored plain output:" << output; } +void TestOutputReader::reportCrash() +{ + TestResultPtr result = createDefaultResult(); + result->setDescription(tr("Test executable crashed.")); + result->setResult(Result::MessageFatal); + m_futureInterface.reportResult(result); +} + void TestOutputReader::reportResult(const TestResultPtr &result) { m_futureInterface.reportResult(result); diff --git a/src/plugins/autotest/testoutputreader.h b/src/plugins/autotest/testoutputreader.h index 7d423feb41f..bcb5e4614ed 100644 --- a/src/plugins/autotest/testoutputreader.h +++ b/src/plugins/autotest/testoutputreader.h @@ -44,6 +44,7 @@ public: virtual void processOutput(const QByteArray &outputLine) = 0; virtual void processStdError(const QByteArray &output); + void reportCrash(); bool hadValidOutput() const { return m_hadValidOutput; } signals: diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index 1d9fbdc00e5..828a9700c84 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -253,6 +253,7 @@ static void performTestRun(QFutureInterface &futureInterface, + rcInfo(testConfiguration)))); } if (testProcess.exitStatus() == QProcess::CrashExit) { + outputReader->reportCrash(); futureInterface.reportResult(TestResultPtr(new FaultyTestResult(Result::MessageFatal, TestRunner::tr("Test for project \"%1\" crashed.") .arg(testConfiguration->displayName()) + processInformation(testProcess)