aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/autotest/quick
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2017-12-06 08:45:36 +0100
committerChristian Stenger <christian.stenger@qt.io>2018-01-15 13:21:44 +0000
commit4eabcda3a1ccce6cd503a29c86f65ce1c024a5d3 (patch)
tree36fbf6e1ddb685f8baff29b3c02ddf957e43d375 /src/plugins/autotest/quick
parentb3e24fbfd4f683fcec98fcab57e7369d5d2956e2 (diff)
AutoTest: Allow grouping of test cases
Grouping of test cases can now get enabled for each registered framework. For now grouping happens only folder based. Task-number: QTCREATORBUG-17979 Change-Id: Ic0e5c0ecc76998a1aedea8aa0845f6d9b53fb179 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/autotest/quick')
-rw-r--r--src/plugins/autotest/quick/quicktesttreeitem.cpp38
-rw-r--r--src/plugins/autotest/quick/quicktesttreeitem.h2
2 files changed, 39 insertions, 1 deletions
diff --git a/src/plugins/autotest/quick/quicktesttreeitem.cpp b/src/plugins/autotest/quick/quicktesttreeitem.cpp
index 29f6aa4a7cc..098e7c37689 100644
--- a/src/plugins/autotest/quick/quicktesttreeitem.cpp
+++ b/src/plugins/autotest/quick/quicktesttreeitem.cpp
@@ -26,6 +26,7 @@
#include "quicktesttreeitem.h"
#include "quicktestconfiguration.h"
#include "quicktestparser.h"
+#include "../testframeworkmanager.h"
#include <cpptools/cppmodelmanager.h>
#include <projectexplorer/session.h>
@@ -267,7 +268,22 @@ TestTreeItem *QuickTestTreeItem::find(const TestParseResult *result)
switch (type()) {
case Root:
- return result->name.isEmpty() ? unnamedQuickTests() : findChildByFile(result->fileName);
+ if (result->name.isEmpty())
+ return unnamedQuickTests();
+ if (TestFrameworkManager::instance()->groupingEnabled(result->frameworkId)) {
+ const QString path = QFileInfo(result->fileName).absolutePath();
+ for (int row = 0; row < childCount(); ++row) {
+ TestTreeItem *group = childItem(row);
+ if (group->filePath() != path)
+ continue;
+ if (auto groupChild = group->findChildByFile(result->fileName))
+ return groupChild;
+ }
+ return nullptr;
+ }
+ return findChildByFile(result->fileName);
+ case GroupNode:
+ return findChildByFile(result->fileName);
case TestCase:
return name().isEmpty() ? findChildByNameAndFile(result->name, result->fileName)
: findChildByName(result->name);
@@ -303,6 +319,26 @@ bool QuickTestTreeItem::lessThan(const TestTreeItem *other, TestTreeItem::SortMo
return TestTreeItem::lessThan(other, mode);
}
+bool QuickTestTreeItem::isGroupNodeFor(const TestTreeItem *other) const
+{
+ QTC_ASSERT(other, return false);
+ if (other->name().isEmpty()) // unnamed quick tests will not get grouped
+ return false;
+ return TestTreeItem::isGroupNodeFor(other);
+}
+
+TestTreeItem *QuickTestTreeItem::createParentGroupNode() const
+{
+ if (filePath().isEmpty() || name().isEmpty())
+ return nullptr;
+ if (type() == TestFunctionOrSet)
+ return nullptr;
+
+ const QFileInfo fileInfo(filePath());
+ const QFileInfo base(fileInfo.absolutePath());
+ return new QuickTestTreeItem(base.baseName(), fileInfo.absolutePath(), TestTreeItem::GroupNode);
+}
+
QSet<QString> QuickTestTreeItem::internalTargets() const
{
QSet<QString> result;
diff --git a/src/plugins/autotest/quick/quicktesttreeitem.h b/src/plugins/autotest/quick/quicktesttreeitem.h
index be036a13fb3..b7116125e30 100644
--- a/src/plugins/autotest/quick/quicktesttreeitem.h
+++ b/src/plugins/autotest/quick/quicktesttreeitem.h
@@ -47,6 +47,8 @@ public:
TestTreeItem *find(const TestParseResult *result) override;
bool modify(const TestParseResult *result) override;
bool lessThan(const TestTreeItem *other, SortMode mode) const override;
+ bool isGroupNodeFor(const TestTreeItem *other) const override;
+ TestTreeItem *createParentGroupNode() const override;
QSet<QString> internalTargets() const override;
private:
TestTreeItem *unnamedQuickTests() const;