aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2020-09-23 09:17:39 +0200
committerChristian Stenger <christian.stenger@qt.io>2020-09-24 11:39:17 +0000
commit479f6c8129d5387448ed57236a8bbb023ab44bc7 (patch)
treea21f3ec8aeac485491ef75aa1ba7420550352909 /src
parent5cb74af1665fbb9a5c45dd907e824be6b8318f2d (diff)
AutoTest: Fix handling of summary
Avoid overwriting already gathered results and handle special cases like parameterized boost tests correctly. Beside this take into account that fatals on the boost side are treated as failures when printing the summary. Amends 6ab70135797c. Change-Id: I3815f79cbb4d16fd7b3d286617d79b30e94ccdd8 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/autotest/boost/boosttestoutputreader.cpp6
-rw-r--r--src/plugins/autotest/testresultmodel.cpp9
2 files changed, 7 insertions, 8 deletions
diff --git a/src/plugins/autotest/boost/boosttestoutputreader.cpp b/src/plugins/autotest/boost/boosttestoutputreader.cpp
index 84cd3e45a0..551b19fea0 100644
--- a/src/plugins/autotest/boost/boosttestoutputreader.cpp
+++ b/src/plugins/autotest/boost/boosttestoutputreader.cpp
@@ -140,6 +140,7 @@ void BoostTestOutputReader::handleMessageMatch(const QRegularExpressionMatch &ma
if (m_currentTest.isEmpty() || m_logLevel > LogLevel::UnitScope)
m_currentTest = caseFromContent(content);
m_result = ResultType::MessageFatal;
+ ++m_summary[ResultType::MessageFatal];
m_description = content;
} else if (content.startsWith("last checkpoint:")) {
if (m_currentTest.isEmpty() || m_logLevel > LogLevel::UnitScope)
@@ -337,8 +338,9 @@ void BoostTestOutputReader::processOutputLine(const QByteArray &outputLine)
sendCompleteInformation();
BoostTestResult *result = new BoostTestResult(id(), m_projectFile, QString());
int failed = match.captured(1).toInt();
+ int fatals = m_summary.value(ResultType::MessageFatal);
QString txt = tr("%1 failures detected in %2.").arg(failed).arg(match.captured(3));
- int passed = (m_testCaseCount != -1) ? m_testCaseCount - failed : -1;
+ int passed = qMax(0, m_testCaseCount - failed);
if (m_testCaseCount != -1)
txt.append(' ').append(tr("%1 tests passed.").arg(passed));
result->setDescription(txt);
@@ -346,7 +348,7 @@ void BoostTestOutputReader::processOutputLine(const QByteArray &outputLine)
reportResult(TestResultPtr(result));
if (m_reportLevel == ReportLevel::Confirm) { // for the final summary
m_summary[ResultType::Pass] += passed;
- m_summary[ResultType::Fail] += failed;
+ m_summary[ResultType::Fail] += failed - fatals;
}
m_testCaseCount = -1;
return;
diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp
index 7ea5f7d9d8..cd38cfea76 100644
--- a/src/plugins/autotest/testresultmodel.cpp
+++ b/src/plugins/autotest/testresultmodel.cpp
@@ -376,13 +376,10 @@ int TestResultModel::resultTypeCount(ResultType type) const
{
int result = 0;
- for (const auto &resultsForId : m_testResultCount.values())
- result += resultsForId.value(type, 0);
-
for (const auto &id : m_reportedSummary.keys()) {
- if (int counted = m_testResultCount.value(id).value(type))
- result -= counted;
- result += m_reportedSummary[id].value(type);
+ // if we got a result count from the framework prefer that over our counted results
+ int reported = m_reportedSummary[id].value(type);
+ result += reported != 0 ? reported : m_testResultCount.value(id).value(type);
}
return result;
}