diff options
author | Christian Stenger <christian.stenger@qt.io> | 2017-12-06 08:45:36 +0100 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2018-01-15 13:21:44 +0000 |
commit | 4eabcda3a1ccce6cd503a29c86f65ce1c024a5d3 (patch) | |
tree | 36fbf6e1ddb685f8baff29b3c02ddf957e43d375 /src/plugins/autotest/quick | |
parent | b3e24fbfd4f683fcec98fcab57e7369d5d2956e2 (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.cpp | 38 | ||||
-rw-r--r-- | src/plugins/autotest/quick/quicktesttreeitem.h | 2 |
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; |