forked from qt-creator/qt-creator
AutoTest: Limit search for test tree items
If searching for a test tree item matching a GTestResult we can safely limit searching to the subtree holding GTests only. Change-Id: Iae27c5a48f24a2e59fc4ccd0c2917520fc22b053 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -24,9 +24,12 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "gtestresult.h"
|
||||
#include "../testtreemodel.h"
|
||||
#include "gtestconstants.h"
|
||||
#include "../testframeworkmanager.h"
|
||||
#include "../testtreeitem.h"
|
||||
|
||||
#include <coreplugin/id.h>
|
||||
|
||||
namespace Autotest {
|
||||
namespace Internal {
|
||||
|
||||
@@ -90,17 +93,21 @@ static QString normalizeTestName(const QString &testname)
|
||||
|
||||
const TestTreeItem *GTestResult::findTestTreeItem() const
|
||||
{
|
||||
const auto item = TestTreeModel::instance()->findNonRootItem([this](const Utils::TreeItem *item) {
|
||||
const TestTreeItem &treeItem = static_cast<const TestTreeItem &>(*item);
|
||||
return matches(treeItem);
|
||||
});
|
||||
auto id = Core::Id(Constants::FRAMEWORK_PREFIX).withSuffix(GTest::Constants::FRAMEWORK_NAME);
|
||||
const TestTreeItem *rootNode = TestFrameworkManager::instance()->rootNodeForTestFramework(id);
|
||||
if (!rootNode)
|
||||
return nullptr;
|
||||
|
||||
const auto item = rootNode->findAnyChild([this](const Utils::TreeItem *item) {
|
||||
const auto treeItem = static_cast<const TestTreeItem *>(item);
|
||||
return treeItem && matches(treeItem);
|
||||
});
|
||||
return static_cast<const TestTreeItem *>(item);
|
||||
}
|
||||
|
||||
bool GTestResult::matches(const TestTreeItem &treeItem) const
|
||||
bool GTestResult::matches(const TestTreeItem *treeItem) const
|
||||
{
|
||||
if (treeItem.proFile() != m_projectFile)
|
||||
if (treeItem->proFile() != m_projectFile)
|
||||
return false;
|
||||
|
||||
if (isTest())
|
||||
@@ -109,21 +116,21 @@ bool GTestResult::matches(const TestTreeItem &treeItem) const
|
||||
return matchesTestFunctionOrSet(treeItem);
|
||||
}
|
||||
|
||||
bool GTestResult::matchesTestFunctionOrSet(const TestTreeItem &treeItem) const
|
||||
bool GTestResult::matchesTestFunctionOrSet(const TestTreeItem *treeItem) const
|
||||
{
|
||||
if (treeItem.type() != TestTreeItem::TestFunctionOrSet)
|
||||
if (treeItem->type() != TestTreeItem::TestFunctionOrSet)
|
||||
return false;
|
||||
|
||||
const QString testItemTestSet = treeItem.parentItem()->name() + '.' + treeItem.name();
|
||||
const QString testItemTestSet = treeItem->parentItem()->name() + '.' + treeItem->name();
|
||||
return testItemTestSet == normalizeName(m_testSetName);
|
||||
}
|
||||
|
||||
bool GTestResult::matchesTestCase(const TestTreeItem &treeItem) const
|
||||
bool GTestResult::matchesTestCase(const TestTreeItem *treeItem) const
|
||||
{
|
||||
if (treeItem.type() != TestTreeItem::TestCase)
|
||||
if (treeItem->type() != TestTreeItem::TestCase)
|
||||
return false;
|
||||
|
||||
return treeItem.name() == normalizeTestName(name());
|
||||
return treeItem->name() == normalizeTestName(name());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -46,9 +46,9 @@ private:
|
||||
bool isTest() const { return m_testSetName.isEmpty(); }
|
||||
bool isTestSet() const { return !m_testSetName.isEmpty(); }
|
||||
|
||||
bool matches(const TestTreeItem &item) const;
|
||||
bool matchesTestFunctionOrSet(const TestTreeItem &treeItem) const;
|
||||
bool matchesTestCase(const TestTreeItem &treeItem) const;
|
||||
bool matches(const TestTreeItem *item) const;
|
||||
bool matchesTestFunctionOrSet(const TestTreeItem *treeItem) const;
|
||||
bool matchesTestCase(const TestTreeItem *treeItem) const;
|
||||
|
||||
QString m_testSetName;
|
||||
QString m_projectFile;
|
||||
|
||||
Reference in New Issue
Block a user