diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp index 8159736f387..12299e0b64a 100644 --- a/src/plugins/autotest/testresultmodel.cpp +++ b/src/plugins/autotest/testresultmodel.cpp @@ -336,7 +336,29 @@ bool TestResultFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s QModelIndex index = m_sourceModel->index(sourceRow, 0, sourceParent); if (!index.isValid()) return false; - return m_enabled.contains(m_sourceModel->testResult(index)->result()); + Result::Type resultType = m_sourceModel->testResult(index)->result(); + switch (resultType) { + case Result::MessageTestCaseSuccess: + return m_enabled.contains(Result::Pass); + case Result::MessageTestCaseFail: + case Result::MessageTestCaseWarn: + return acceptTestCaseResult(index); + default: + return m_enabled.contains(resultType); + } +} + +bool TestResultFilterModel::acceptTestCaseResult(const QModelIndex &index) const +{ + Utils::TreeItem *item = m_sourceModel->itemForIndex(index); + QTC_ASSERT(item, return false); + + for (const Utils::TreeItem *child : item->children()) { + const TestResultItem *resultItem = static_cast(child); + if (m_enabled.contains(resultItem->testResult()->result())) + return true; + } + return false; } } // namespace Internal diff --git a/src/plugins/autotest/testresultmodel.h b/src/plugins/autotest/testresultmodel.h index 431db56dc67..ee933bd0b6e 100644 --- a/src/plugins/autotest/testresultmodel.h +++ b/src/plugins/autotest/testresultmodel.h @@ -94,6 +94,7 @@ protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; private: + bool acceptTestCaseResult(const QModelIndex &index) const; TestResultModel *m_sourceModel; QSet m_enabled; };