diff --git a/src/plugins/autotest/qtest/qttestoutputreader.cpp b/src/plugins/autotest/qtest/qttestoutputreader.cpp index 3ee409cda1e..669df2a41e1 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.cpp +++ b/src/plugins/autotest/qtest/qttestoutputreader.cpp @@ -169,6 +169,8 @@ void QtTestOutputReader::processOutput(const QByteArray &outputLine) } else if (currentTag == QStringLiteral("TestFunction")) { m_testCase = m_xmlReader.attributes().value(QStringLiteral("name")).toString(); QTC_ASSERT(!m_testCase.isEmpty(), continue); + if (m_testCase == m_formerTestCase) // don't report "Executing..." more than once + continue; TestResultPtr testResult = TestResultPtr(createDefaultResult()); testResult->setResult(Result::MessageTestCaseStart); testResult->setDescription(tr("Executing test function %1").arg(m_testCase)); @@ -261,6 +263,7 @@ void QtTestOutputReader::processOutput(const QByteArray &outputLine) m_futureInterface.reportResult(TestResultPtr(testResult)); m_futureInterface.setProgressValue(m_futureInterface.progressValue() + 1); m_dataTag.clear(); + m_formerTestCase = m_testCase; m_testCase.clear(); } else if (currentTag == QStringLiteral("TestCase")) { QtTestResult *testResult = createDefaultResult(); diff --git a/src/plugins/autotest/qtest/qttestoutputreader.h b/src/plugins/autotest/qtest/qttestoutputreader.h index 2ae74d60d27..027300c6e9c 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.h +++ b/src/plugins/autotest/qtest/qttestoutputreader.h @@ -62,6 +62,7 @@ private: CDATAMode m_cdataMode = None; QString m_className; QString m_testCase; + QString m_formerTestCase; QString m_dataTag; Result::Type m_result = Result::Invalid; QString m_description; diff --git a/src/plugins/autotest/qtest/qttestresult.cpp b/src/plugins/autotest/qtest/qttestresult.cpp index f4c108ec2e3..bc3abd49f40 100644 --- a/src/plugins/autotest/qtest/qttestresult.cpp +++ b/src/plugins/autotest/qtest/qttestresult.cpp @@ -78,7 +78,8 @@ bool QtTestResult::isDirectParentOf(const TestResult *other, bool *needsIntermed if (!TestResult::isDirectParentOf(other, needsIntermediate)) return false; const QtTestResult *qtOther = static_cast(other); - if (result() == Result::MessageTestCaseStart || result() == Result::MessageIntermediate) { + + if (TestResult::isMessageCaseStart(result())) { if (qtOther->isDataTag()) { if (qtOther->m_function == m_function) { if (m_dataTag.isEmpty()) { diff --git a/src/plugins/autotest/testresult.cpp b/src/plugins/autotest/testresult.cpp index 11b09067b27..951c061fdc9 100644 --- a/src/plugins/autotest/testresult.cpp +++ b/src/plugins/autotest/testresult.cpp @@ -161,6 +161,13 @@ QColor TestResult::colorForType(const Result::Type type) } } +bool TestResult::isMessageCaseStart(const Result::Type type) +{ + return type == Result::MessageTestCaseStart || type == Result::MessageTestCaseSuccess + || type == Result::MessageTestCaseFail || type == Result::MessageTestCaseWarn + || type == Result::MessageIntermediate; +} + bool TestResult::isDirectParentOf(const TestResult *other, bool * /*needsIntermediate*/) const { QTC_ASSERT(other, return false); diff --git a/src/plugins/autotest/testresult.h b/src/plugins/autotest/testresult.h index 9eff8e5428b..e53e6fcce41 100644 --- a/src/plugins/autotest/testresult.h +++ b/src/plugins/autotest/testresult.h @@ -90,6 +90,7 @@ public: static Result::Type toResultType(int rt); static QString resultToString(const Result::Type type); static QColor colorForType(const Result::Type type); + static bool isMessageCaseStart(const Result::Type type); virtual bool isDirectParentOf(const TestResult *other, bool *needsIntermediate) const; virtual bool isIntermediateFor(const TestResult *other) const; diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp index 6dc6d2a1a54..79c34bbecc0 100644 --- a/src/plugins/autotest/testresultmodel.cpp +++ b/src/plugins/autotest/testresultmodel.cpp @@ -99,8 +99,7 @@ void TestResultItem::updateDescription(const QString &description) void TestResultItem::updateResult() { - if (m_testResult->result() != Result::MessageTestCaseStart - && m_testResult->result() != Result::MessageIntermediate) + if (!TestResult::isMessageCaseStart(m_testResult->result())) return; Result::Type newResult = Result::MessageTestCaseSuccess;