forked from qt-creator/qt-creator
AutoTest: Add suite layer for tests
Test suites are used in several test frameworks. To avoid fiddling around with the types and their meaning on the frameworks side just add another type (TestSuite) that can be used. Frameworks can use or ignore this type as it is done already for other types. Change-Id: I6c2a312a32ce5716f55b49303e2b1a0f6f8e8da4 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -18,5 +18,7 @@
|
||||
<file>images/visual@2x.png</file>
|
||||
<file>images/run_file.png</file>
|
||||
<file>images/run_file@2x.png</file>
|
||||
<file>images/suite.png</file>
|
||||
<file>images/suite@2x.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
BIN
src/plugins/autotest/images/suite.png
Normal file
BIN
src/plugins/autotest/images/suite.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 306 B |
BIN
src/plugins/autotest/images/suite@2x.png
Normal file
BIN
src/plugins/autotest/images/suite@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 501 B |
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -171,10 +171,10 @@ QList<TestTreeItem *> TestTreeModel::testItemsByName(TestTreeItem *root, const Q
|
||||
QList<TestTreeItem *> 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);
|
||||
|
||||
Reference in New Issue
Block a user