diff --git a/src/plugins/autotest/autotest.qrc b/src/plugins/autotest/autotest.qrc
index 8cf636d684f..51d19022da5 100644
--- a/src/plugins/autotest/autotest.qrc
+++ b/src/plugins/autotest/autotest.qrc
@@ -18,5 +18,7 @@
images/visual@2x.png
images/run_file.png
images/run_file@2x.png
+ images/suite.png
+ images/suite@2x.png
diff --git a/src/plugins/autotest/images/suite.png b/src/plugins/autotest/images/suite.png
new file mode 100644
index 00000000000..91fc50bf328
Binary files /dev/null and b/src/plugins/autotest/images/suite.png differ
diff --git a/src/plugins/autotest/images/suite@2x.png b/src/plugins/autotest/images/suite@2x.png
new file mode 100644
index 00000000000..958480af604
Binary files /dev/null and b/src/plugins/autotest/images/suite@2x.png differ
diff --git a/src/plugins/autotest/qtest/qttesttreeitem.cpp b/src/plugins/autotest/qtest/qttesttreeitem.cpp
index 3fe96b6f393..996482ddea8 100644
--- a/src/plugins/autotest/qtest/qttesttreeitem.cpp
+++ b/src/plugins/autotest/qtest/qttesttreeitem.cpp
@@ -326,7 +326,7 @@ bool QtTestTreeItem::modify(const TestParseResult *result)
switch (type()) {
case TestCase:
- return modifyTestCaseContent(result);
+ return modifyTestCaseOrSuiteContent(result);
case TestFunctionOrSet:
case TestDataFunction:
case TestSpecialFunction:
diff --git a/src/plugins/autotest/quick/quicktesttreeitem.cpp b/src/plugins/autotest/quick/quicktesttreeitem.cpp
index 6bc57a0e381..c099bc38769 100644
--- a/src/plugins/autotest/quick/quicktesttreeitem.cpp
+++ b/src/plugins/autotest/quick/quicktesttreeitem.cpp
@@ -364,7 +364,7 @@ bool QuickTestTreeItem::modify(const TestParseResult *result)
switch (type()) {
case TestCase:
- return result->name.isEmpty() ? false : modifyTestCaseContent(result);
+ return result->name.isEmpty() ? false : modifyTestCaseOrSuiteContent(result);
case TestFunctionOrSet:
case TestDataFunction:
case TestSpecialFunction:
diff --git a/src/plugins/autotest/testtreeitem.cpp b/src/plugins/autotest/testtreeitem.cpp
index e1c1debe9c3..5c0952017c4 100644
--- a/src/plugins/autotest/testtreeitem.cpp
+++ b/src/plugins/autotest/testtreeitem.cpp
@@ -47,6 +47,7 @@ TestTreeItem::TestTreeItem(const QString &name, const QString &filePath, Type ty
switch (m_type) {
case Root:
case GroupNode:
+ case TestSuite:
case TestCase:
case TestFunctionOrSet:
m_checked = Qt::Checked;
@@ -62,6 +63,7 @@ static QIcon testTreeIcon(TestTreeItem::Type type)
static QIcon icons[] = {
QIcon(),
Utils::Icons::OPENFILE.icon(),
+ QIcon(":/autotest/images/suite.png"),
Utils::CodeModelIcon::iconForType(Utils::CodeModelIcon::Class),
Utils::CodeModelIcon::iconForType(Utils::CodeModelIcon::SlotPrivate),
QIcon(":/autotest/images/data.png")
@@ -120,6 +122,7 @@ Qt::ItemFlags TestTreeItem::flags(int /*column*/) const
case Root:
case GroupNode:
return Qt::ItemIsEnabled | Qt::ItemIsAutoTristate | Qt::ItemIsUserCheckable;
+ case TestSuite:
case TestCase:
return defaultFlags | Qt::ItemIsAutoTristate | Qt::ItemIsUserCheckable;
case TestFunctionOrSet:
@@ -129,7 +132,7 @@ Qt::ItemFlags TestTreeItem::flags(int /*column*/) const
}
}
-bool TestTreeItem::modifyTestCaseContent(const TestParseResult *result)
+bool TestTreeItem::modifyTestCaseOrSuiteContent(const TestParseResult *result)
{
bool hasBeenModified = modifyName(result->name);
hasBeenModified |= modifyLineAndColumn(result);
@@ -170,6 +173,7 @@ Qt::CheckState TestTreeItem::checked() const
switch (m_type) {
case Root:
case GroupNode:
+ case TestSuite:
case TestCase:
case TestFunctionOrSet:
case TestDataTag:
diff --git a/src/plugins/autotest/testtreeitem.h b/src/plugins/autotest/testtreeitem.h
index 0a3bf7d72c7..b404686a175 100644
--- a/src/plugins/autotest/testtreeitem.h
+++ b/src/plugins/autotest/testtreeitem.h
@@ -59,6 +59,7 @@ public:
{
Root,
GroupNode,
+ TestSuite,
TestCase,
TestFunctionOrSet,
TestDataTag,
@@ -78,7 +79,7 @@ public:
virtual QVariant data(int column, int role) const override;
virtual bool setData(int column, const QVariant &data, int role) override;
virtual Qt::ItemFlags flags(int column) const override;
- bool modifyTestCaseContent(const TestParseResult *result);
+ bool modifyTestCaseOrSuiteContent(const TestParseResult *result);
bool modifyTestFunctionContent(const TestParseResult *result);
bool modifyDataTagContent(const TestParseResult *result);
bool modifyLineAndColumn(const TestParseResult *result);
diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp
index 49fc3d3d2f6..d78e83b9a88 100644
--- a/src/plugins/autotest/testtreemodel.cpp
+++ b/src/plugins/autotest/testtreemodel.cpp
@@ -171,10 +171,10 @@ QList TestTreeModel::testItemsByName(TestTreeItem *root, const Q
QList result;
root->forFirstLevelChildren([&testName, &result, this](TestTreeItem *node) {
- if (node->type() == TestTreeItem::TestCase) {
+ if (node->type() == TestTreeItem::TestSuite || node->type() == TestTreeItem::TestCase) {
if (node->name() == testName) {
result << node;
- return; // prioritize Tests over TestCases
+ return; // prioritize test suites and cases over test functions
}
TestTreeItem *testCase = node->findFirstLevelChild([&testName](TestTreeItem *it) {
QTC_ASSERT(it, return false);