AutoTest: Use base of framework inside TestTreeItem

...and respectively inside the parse results which hold the
information that are used to create the items.

Change-Id: I78f7b5632df5d449d39fa03ffbf48036a138e337
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2020-10-06 15:27:27 +02:00
parent f9cb699211
commit 24db5dcc4f
25 changed files with 63 additions and 56 deletions

View File

@@ -25,6 +25,7 @@
#include "boosttestparser.h" #include "boosttestparser.h"
#include "boostcodeparser.h" #include "boostcodeparser.h"
#include "boosttestframework.h"
#include "boosttesttreeitem.h" #include "boosttesttreeitem.h"
#include <cpptools/cppmodelmanager.h> #include <cpptools/cppmodelmanager.h>
@@ -56,7 +57,7 @@ TestTreeItem *BoostTestParseResult::createTestTreeItem() const
if (itemType == TestTreeItem::Root) if (itemType == TestTreeItem::Root)
return nullptr; return nullptr;
BoostTestTreeItem *item = new BoostTestTreeItem(framework, displayName, fileName, itemType); BoostTestTreeItem *item = new BoostTestTreeItem(base, displayName, fileName, itemType);
item->setProFile(proFile); item->setProFile(proFile);
item->setLine(line); item->setLine(line);
item->setColumn(column); item->setColumn(column);
@@ -98,10 +99,10 @@ static bool hasBoostTestMacros(const CPlusPlus::Document::Ptr &doc)
} }
static BoostTestParseResult *createParseResult(const QString &name, const QString &filePath, static BoostTestParseResult *createParseResult(const QString &name, const QString &filePath,
const QString &projectFile, ITestFramework *framework, const QString &projectFile, ITestBase *base,
TestTreeItem::Type type, const BoostTestInfo &info) TestTreeItem::Type type, const BoostTestInfo &info)
{ {
BoostTestParseResult *partialSuite = new BoostTestParseResult(framework); BoostTestParseResult *partialSuite = new BoostTestParseResult(base);
partialSuite->itemType = type; partialSuite->itemType = type;
partialSuite->fileName = filePath; partialSuite->fileName = filePath;
partialSuite->name = info.fullName; partialSuite->name = info.fullName;
@@ -117,7 +118,7 @@ static BoostTestParseResult *createParseResult(const QString &name, const QStrin
static bool handleBoostTest(QFutureInterface<TestParseResultPtr> futureInterface, static bool handleBoostTest(QFutureInterface<TestParseResultPtr> futureInterface,
const CPlusPlus::Document::Ptr &doc, const CPlusPlus::Document::Ptr &doc,
const CPlusPlus::Snapshot &snapshot, const CPlusPlus::Snapshot &snapshot,
ITestFramework *framework) ITestBase *base)
{ {
const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance(); const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
const QString &filePath = doc->fileName(); const QString &filePath = doc->fileName();
@@ -139,7 +140,7 @@ static bool handleBoostTest(QFutureInterface<TestParseResultPtr> futureInterface
BoostTestInfo firstSuite = suitesStates.first(); BoostTestInfo firstSuite = suitesStates.first();
QStringList suites = firstSuite.fullName.split('/'); QStringList suites = firstSuite.fullName.split('/');
BoostTestParseResult *topLevelSuite = createParseResult(suites.first(), filePath, BoostTestParseResult *topLevelSuite = createParseResult(suites.first(), filePath,
projectFile, framework, projectFile, base,
TestTreeItem::TestSuite, TestTreeItem::TestSuite,
firstSuite); firstSuite);
BoostTestParseResult *currentSuite = topLevelSuite; BoostTestParseResult *currentSuite = topLevelSuite;
@@ -148,7 +149,7 @@ static bool handleBoostTest(QFutureInterface<TestParseResultPtr> futureInterface
firstSuite = suitesStates.first(); firstSuite = suitesStates.first();
suites = firstSuite.fullName.split('/'); suites = firstSuite.fullName.split('/');
BoostTestParseResult *suiteResult = createParseResult(suites.last(), filePath, BoostTestParseResult *suiteResult = createParseResult(suites.last(), filePath,
projectFile, framework, projectFile, base,
TestTreeItem::TestSuite, TestTreeItem::TestSuite,
firstSuite); firstSuite);
currentSuite->children.append(suiteResult); currentSuite->children.append(suiteResult);
@@ -161,7 +162,7 @@ static bool handleBoostTest(QFutureInterface<TestParseResultPtr> futureInterface
locationAndType.m_suitesState.last().fullName + "::" + locationAndType.m_name, locationAndType.m_suitesState.last().fullName + "::" + locationAndType.m_name,
locationAndType.m_state, locationAndType.m_line}; locationAndType.m_state, locationAndType.m_line};
BoostTestParseResult *funcResult = createParseResult(locationAndType.m_name, filePath, BoostTestParseResult *funcResult = createParseResult(locationAndType.m_name, filePath,
projectFile, framework, projectFile, base,
locationAndType.m_type, locationAndType.m_type,
tmpInfo); tmpInfo);
currentSuite->children.append(funcResult); currentSuite->children.append(funcResult);

View File

@@ -34,7 +34,7 @@ namespace Internal {
class BoostTestParseResult : public TestParseResult class BoostTestParseResult : public TestParseResult
{ {
public: public:
explicit BoostTestParseResult(ITestFramework *framework) : TestParseResult(framework) {} explicit BoostTestParseResult(ITestBase *base) : TestParseResult(base) {}
TestTreeItem *createTestTreeItem() const override; TestTreeItem *createTestTreeItem() const override;
// TODO special attributes/states (labeled, timeout,...?) // TODO special attributes/states (labeled, timeout,...?)
BoostTestTreeItem::TestStates state = BoostTestTreeItem::Enabled; BoostTestTreeItem::TestStates state = BoostTestTreeItem::Enabled;

View File

@@ -26,6 +26,7 @@
#include "boosttesttreeitem.h" #include "boosttesttreeitem.h"
#include "boosttestconstants.h" #include "boosttestconstants.h"
#include "boosttestconfiguration.h" #include "boosttestconfiguration.h"
#include "boosttestframework.h"
#include "boosttestparser.h" #include "boosttestparser.h"
#include "../testframeworkmanager.h" #include "../testframeworkmanager.h"
@@ -74,7 +75,7 @@ TestTreeItem *BoostTestTreeItem::find(const TestParseResult *result)
switch (type()) { switch (type()) {
case Root: case Root:
if (result->framework->grouping()) { if (static_cast<BoostTestFramework *>(result->base)->grouping()) {
const QFileInfo fileInfo(bResult->fileName); const QFileInfo fileInfo(bResult->fileName);
const QFileInfo base(fileInfo.absolutePath()); const QFileInfo base(fileInfo.absolutePath());
for (int row = 0; row < childCount(); ++row) { for (int row = 0; row < childCount(); ++row) {

View File

@@ -48,11 +48,11 @@ public:
Q_FLAGS(TestState) Q_FLAGS(TestState)
Q_DECLARE_FLAGS(TestStates, TestState) Q_DECLARE_FLAGS(TestStates, TestState)
explicit BoostTestTreeItem(ITestFramework *framework, explicit BoostTestTreeItem(ITestBase *base,
const QString &name = QString(), const QString &name = QString(),
const QString &filePath = QString(), const QString &filePath = QString(),
Type type = Root) Type type = Root)
: TestTreeItem(framework, name, filePath, type) : TestTreeItem(base, name, filePath, type)
{} {}
public: public:

View File

@@ -25,6 +25,7 @@
#include "catchtestparser.h" #include "catchtestparser.h"
#include "catchcodeparser.h" #include "catchcodeparser.h"
#include "catchframework.h"
#include "catchtreeitem.h" #include "catchtreeitem.h"
#include <cpptools/cppmodelmanager.h> #include <cpptools/cppmodelmanager.h>
@@ -97,7 +98,7 @@ static bool hasCatchNames(const CPlusPlus::Document::Ptr &document)
static bool handleCatchDocument(QFutureInterface<TestParseResultPtr> futureInterface, static bool handleCatchDocument(QFutureInterface<TestParseResultPtr> futureInterface,
const CPlusPlus::Document::Ptr &doc, const CPlusPlus::Document::Ptr &doc,
ITestFramework *framework) ITestBase *base)
{ {
const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance(); const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
const QString &filePath = doc->fileName(); const QString &filePath = doc->fileName();
@@ -113,7 +114,7 @@ static bool handleCatchDocument(QFutureInterface<TestParseResultPtr> futureInter
CatchCodeParser codeParser(fileContent, projectPart->languageFeatures); CatchCodeParser codeParser(fileContent, projectPart->languageFeatures);
const CatchTestCodeLocationList foundTests = codeParser.findTests(); const CatchTestCodeLocationList foundTests = codeParser.findTests();
CatchParseResult *parseResult = new CatchParseResult(framework); CatchParseResult *parseResult = new CatchParseResult(base);
parseResult->itemType = TestTreeItem::TestSuite; parseResult->itemType = TestTreeItem::TestSuite;
parseResult->fileName = filePath; parseResult->fileName = filePath;
parseResult->name = filePath; parseResult->name = filePath;
@@ -121,7 +122,7 @@ static bool handleCatchDocument(QFutureInterface<TestParseResultPtr> futureInter
parseResult->proFile = projectParts.first()->projectFile; parseResult->proFile = projectParts.first()->projectFile;
for (const CatchTestCodeLocationAndType & testLocation : foundTests) { for (const CatchTestCodeLocationAndType & testLocation : foundTests) {
CatchParseResult *testCase = new CatchParseResult(framework); CatchParseResult *testCase = new CatchParseResult(base);
testCase->fileName = filePath; testCase->fileName = filePath;
testCase->name = testLocation.m_name; testCase->name = testLocation.m_name;
testCase->proFile = proFile; testCase->proFile = proFile;
@@ -152,7 +153,7 @@ TestTreeItem *CatchParseResult::createTestTreeItem() const
if (itemType == TestTreeItem::Root) if (itemType == TestTreeItem::Root)
return nullptr; return nullptr;
CatchTreeItem *item = new CatchTreeItem(framework, name, fileName, itemType); CatchTreeItem *item = new CatchTreeItem(base, name, fileName, itemType);
item->setProFile(proFile); item->setProFile(proFile);
item->setLine(line); item->setLine(line);
item->setColumn(column); item->setColumn(column);

View File

@@ -33,8 +33,8 @@ namespace Internal {
class CatchParseResult : public TestParseResult class CatchParseResult : public TestParseResult
{ {
public: public:
explicit CatchParseResult(ITestFramework *framework) explicit CatchParseResult(ITestBase *base)
: TestParseResult(framework) {} : TestParseResult(base) {}
TestTreeItem *createTestTreeItem() const override; TestTreeItem *createTestTreeItem() const override;
CatchTreeItem::TestStates states; CatchTreeItem::TestStates states;
}; };

View File

@@ -86,7 +86,7 @@ TestTreeItem *CatchTreeItem::find(const TestParseResult *result)
switch (type()) { switch (type()) {
case Root: case Root:
if (result->framework->grouping()) { if (static_cast<CatchFramework *>(result->base)->grouping()) {
const QString path = QFileInfo(result->fileName).absolutePath(); const QString path = QFileInfo(result->fileName).absolutePath();
for (int row = 0; row < childCount(); ++row) { for (int row = 0; row < childCount(); ++row) {
TestTreeItem *group = childAt(row); TestTreeItem *group = childAt(row);

View File

@@ -41,9 +41,9 @@ public:
Q_FLAGS(TestState) Q_FLAGS(TestState)
Q_DECLARE_FLAGS(TestStates, TestState) Q_DECLARE_FLAGS(TestStates, TestState)
explicit CatchTreeItem(ITestFramework *framework, const QString &name = QString(), explicit CatchTreeItem(ITestBase *testBase, const QString &name = QString(),
const QString &filePath = QString(), Type type = Root) const QString &filePath = QString(), Type type = Root)
: TestTreeItem(framework, name, filePath, type) {} : TestTreeItem(testBase, name, filePath, type) {}
void setStates(CatchTreeItem::TestStates state) { m_state = state; } void setStates(CatchTreeItem::TestStates state) { m_state = state; }
CatchTreeItem::TestStates states() const { return m_state; } CatchTreeItem::TestStates states() const { return m_state; }

View File

@@ -24,6 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "gtestparser.h" #include "gtestparser.h"
#include "gtestframework.h"
#include "gtesttreeitem.h" #include "gtesttreeitem.h"
#include "gtestvisitors.h" #include "gtestvisitors.h"
#include "gtest_utils.h" #include "gtest_utils.h"
@@ -38,7 +39,7 @@ TestTreeItem *GTestParseResult::createTestTreeItem() const
{ {
if (itemType != TestTreeItem::TestSuite && itemType != TestTreeItem::TestCase) if (itemType != TestTreeItem::TestSuite && itemType != TestTreeItem::TestCase)
return nullptr; return nullptr;
GTestTreeItem *item = new GTestTreeItem(framework, name, fileName, itemType); GTestTreeItem *item = new GTestTreeItem(base, name, fileName, itemType);
item->setProFile(proFile); item->setProFile(proFile);
item->setLine(line); item->setLine(line);
item->setColumn(column); item->setColumn(column);
@@ -89,7 +90,7 @@ static bool hasGTestNames(const CPlusPlus::Document::Ptr &document)
static bool handleGTest(QFutureInterface<TestParseResultPtr> futureInterface, static bool handleGTest(QFutureInterface<TestParseResultPtr> futureInterface,
const CPlusPlus::Document::Ptr &doc, const CPlusPlus::Document::Ptr &doc,
const CPlusPlus::Snapshot &snapshot, const CPlusPlus::Snapshot &snapshot,
ITestFramework *framework) ITestBase *base)
{ {
const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance(); const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
const QString &filePath = doc->fileName(); const QString &filePath = doc->fileName();
@@ -109,7 +110,7 @@ static bool handleGTest(QFutureInterface<TestParseResultPtr> futureInterface,
return false; // happens if shutting down while parsing return false; // happens if shutting down while parsing
for (const GTestCaseSpec &testSpec : result.keys()) { for (const GTestCaseSpec &testSpec : result.keys()) {
GTestParseResult *parseResult = new GTestParseResult(framework); GTestParseResult *parseResult = new GTestParseResult(base);
parseResult->itemType = TestTreeItem::TestSuite; parseResult->itemType = TestTreeItem::TestSuite;
parseResult->fileName = filePath; parseResult->fileName = filePath;
parseResult->name = testSpec.testCaseName; parseResult->name = testSpec.testCaseName;
@@ -119,7 +120,7 @@ static bool handleGTest(QFutureInterface<TestParseResultPtr> futureInterface,
parseResult->proFile = proFile; parseResult->proFile = proFile;
for (const GTestCodeLocationAndType &location : result.value(testSpec)) { for (const GTestCodeLocationAndType &location : result.value(testSpec)) {
GTestParseResult *testSet = new GTestParseResult(framework); GTestParseResult *testSet = new GTestParseResult(base);
testSet->name = location.m_name; testSet->name = location.m_name;
testSet->fileName = filePath; testSet->fileName = filePath;
testSet->line = location.m_line; testSet->line = location.m_line;

View File

@@ -33,7 +33,7 @@ namespace Internal {
class GTestParseResult : public TestParseResult class GTestParseResult : public TestParseResult
{ {
public: public:
explicit GTestParseResult(ITestFramework *framework) : TestParseResult(framework) {} explicit GTestParseResult(ITestBase *base) : TestParseResult(base) {}
TestTreeItem *createTestTreeItem() const override; TestTreeItem *createTestTreeItem() const override;
bool parameterized = false; bool parameterized = false;
bool typed = false; bool typed = false;

View File

@@ -377,7 +377,7 @@ TestTreeItem *GTestTreeItem::find(const TestParseResult *result)
states |= GTestTreeItem::Typed; states |= GTestTreeItem::Typed;
switch (type()) { switch (type()) {
case Root: case Root:
if (result->framework->grouping()) { if (static_cast<GTestFramework *>(result->base)->grouping()) {
if (GTestFramework::groupMode() == GTest::Constants::Directory) { if (GTestFramework::groupMode() == GTest::Constants::Directory) {
const QFileInfo fileInfo(parseResult->fileName); const QFileInfo fileInfo(parseResult->fileName);
const QFileInfo base(fileInfo.absolutePath()); const QFileInfo base(fileInfo.absolutePath());

View File

@@ -46,11 +46,11 @@ public:
Q_FLAGS(TestState) Q_FLAGS(TestState)
Q_DECLARE_FLAGS(TestStates, TestState) Q_DECLARE_FLAGS(TestStates, TestState)
explicit GTestTreeItem(ITestFramework *framework, explicit GTestTreeItem(ITestBase *testBase,
const QString &name = QString(), const QString &name = QString(),
const QString &filePath = QString(), const QString &filePath = QString(),
Type type = Root) Type type = Root)
: TestTreeItem(framework, name, filePath, type), m_state(Enabled) : TestTreeItem(testBase, name, filePath, type), m_state(Enabled)
{} {}
TestTreeItem *copyWithoutChildren() override; TestTreeItem *copyWithoutChildren() override;

View File

@@ -24,7 +24,6 @@
****************************************************************************/ ****************************************************************************/
#include "itestframework.h" #include "itestframework.h"
#include "itestparser.h"
namespace Autotest { namespace Autotest {

View File

@@ -35,18 +35,18 @@
namespace Autotest { namespace Autotest {
class ITestFramework; class ITestBase;
class TestParseResult class TestParseResult
{ {
public: public:
explicit TestParseResult(ITestFramework *framework) : framework(framework) {} explicit TestParseResult(ITestBase *base) : base(base) {}
virtual ~TestParseResult() { qDeleteAll(children); } virtual ~TestParseResult() { qDeleteAll(children); }
virtual TestTreeItem *createTestTreeItem() const = 0; virtual TestTreeItem *createTestTreeItem() const = 0;
QVector<TestParseResult *> children; QVector<TestParseResult *> children;
ITestFramework *framework; ITestBase *base;
TestTreeItem::Type itemType = TestTreeItem::Root; TestTreeItem::Type itemType = TestTreeItem::Root;
QString displayName; QString displayName;
QString fileName; QString fileName;

View File

@@ -24,6 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "qttestparser.h" #include "qttestparser.h"
#include "qttestframework.h"
#include "qttesttreeitem.h" #include "qttesttreeitem.h"
#include "qttestvisitors.h" #include "qttestvisitors.h"
#include "qttest_utils.h" #include "qttest_utils.h"
@@ -41,7 +42,7 @@ TestTreeItem *QtTestParseResult::createTestTreeItem() const
if (itemType == TestTreeItem::Root) if (itemType == TestTreeItem::Root)
return nullptr; return nullptr;
QtTestTreeItem *item = new QtTestTreeItem(framework, displayName, fileName, itemType); QtTestTreeItem *item = new QtTestTreeItem(base, displayName, fileName, itemType);
item->setProFile(proFile); item->setProFile(proFile);
item->setLine(line); item->setLine(line);
item->setColumn(column); item->setColumn(column);
@@ -284,7 +285,7 @@ static bool handleQtTest(QFutureInterface<TestParseResultPtr> futureInterface,
const CPlusPlus::Snapshot &snapshot, const CPlusPlus::Snapshot &snapshot,
const QString &oldTestCaseName, const QString &oldTestCaseName,
const QStringList &alternativeFiles, const QStringList &alternativeFiles,
ITestFramework *framework) ITestBase *base)
{ {
const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance(); const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
const QString &fileName = document->fileName(); const QString &fileName = document->fileName();
@@ -321,7 +322,7 @@ static bool handleQtTest(QFutureInterface<TestParseResultPtr> futureInterface,
for (const QString &file : files) for (const QString &file : files)
Utils::addToHash(&dataTags, checkForDataTags(file, snapshot)); Utils::addToHash(&dataTags, checkForDataTags(file, snapshot));
QtTestParseResult *parseResult = new QtTestParseResult(framework); QtTestParseResult *parseResult = new QtTestParseResult(base);
parseResult->itemType = TestTreeItem::TestCase; parseResult->itemType = TestTreeItem::TestCase;
parseResult->fileName = declaringDoc->fileName(); parseResult->fileName = declaringDoc->fileName();
parseResult->name = testCaseName; parseResult->name = testCaseName;
@@ -338,7 +339,7 @@ static bool handleQtTest(QFutureInterface<TestParseResultPtr> futureInterface,
const QtTestCodeLocationAndType &location = it.value(); const QtTestCodeLocationAndType &location = it.value();
QString functionName = it.key(); QString functionName = it.key();
functionName = functionName.mid(functionName.lastIndexOf(':') + 1); functionName = functionName.mid(functionName.lastIndexOf(':') + 1);
QtTestParseResult *func = new QtTestParseResult(framework); QtTestParseResult *func = new QtTestParseResult(base);
func->itemType = location.m_type; func->itemType = location.m_type;
func->name = testCaseName + "::" + functionName; func->name = testCaseName + "::" + functionName;
func->displayName = functionName; func->displayName = functionName;
@@ -349,7 +350,7 @@ static bool handleQtTest(QFutureInterface<TestParseResultPtr> futureInterface,
const QtTestCodeLocationList &tagLocations = tagLocationsFor(func, dataTags); const QtTestCodeLocationList &tagLocations = tagLocationsFor(func, dataTags);
for (const QtTestCodeLocationAndType &tag : tagLocations) { for (const QtTestCodeLocationAndType &tag : tagLocations) {
QtTestParseResult *dataTag = new QtTestParseResult(framework); QtTestParseResult *dataTag = new QtTestParseResult(base);
dataTag->itemType = tag.m_type; dataTag->itemType = tag.m_type;
dataTag->name = tag.m_name; dataTag->name = tag.m_name;
dataTag->displayName = tag.m_name; dataTag->displayName = tag.m_name;

View File

@@ -33,7 +33,7 @@ namespace Internal {
class QtTestParseResult : public TestParseResult class QtTestParseResult : public TestParseResult
{ {
public: public:
explicit QtTestParseResult(ITestFramework *framework) : TestParseResult(framework) {} explicit QtTestParseResult(ITestBase *base) : TestParseResult(base) {}
void setInherited(bool inherited) { m_inherited = inherited; } void setInherited(bool inherited) { m_inherited = inherited; }
bool inherited() const { return m_inherited; } bool inherited() const { return m_inherited; }
TestTreeItem *createTestTreeItem() const override; TestTreeItem *createTestTreeItem() const override;

View File

@@ -26,7 +26,7 @@
#include "qttesttreeitem.h" #include "qttesttreeitem.h"
#include "qttestconfiguration.h" #include "qttestconfiguration.h"
#include "qttestparser.h" #include "qttestparser.h"
#include "../testframeworkmanager.h" #include "qttestframework.h"
#include <projectexplorer/session.h> #include <projectexplorer/session.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -34,9 +34,9 @@
namespace Autotest { namespace Autotest {
namespace Internal { namespace Internal {
QtTestTreeItem::QtTestTreeItem(ITestFramework *framework, const QString &name, QtTestTreeItem::QtTestTreeItem(ITestBase *testBase, const QString &name,
const QString &filePath, TestTreeItem::Type type) const QString &filePath, TestTreeItem::Type type)
: TestTreeItem(framework, name, filePath, type) : TestTreeItem(testBase, name, filePath, type)
{ {
if (type == TestDataTag) if (type == TestDataTag)
setData(0, Qt::Checked, Qt::CheckStateRole); setData(0, Qt::Checked, Qt::CheckStateRole);
@@ -311,7 +311,7 @@ TestTreeItem *QtTestTreeItem::find(const TestParseResult *result)
switch (type()) { switch (type()) {
case Root: case Root:
if (result->framework->grouping()) { if (static_cast<QtTestFramework *>(result->base)->grouping()) {
const QString path = QFileInfo(result->fileName).absolutePath(); const QString path = QFileInfo(result->fileName).absolutePath();
for (int row = 0; row < childCount(); ++row) { for (int row = 0; row < childCount(); ++row) {
TestTreeItem *group = childAt(row); TestTreeItem *group = childAt(row);

View File

@@ -33,8 +33,8 @@ namespace Internal {
class QtTestTreeItem : public TestTreeItem class QtTestTreeItem : public TestTreeItem
{ {
public: public:
explicit QtTestTreeItem(ITestFramework *framework, const QString &name = QString(), const QString &filePath = QString(), explicit QtTestTreeItem(ITestBase *framework, const QString &name = QString(),
Type type = Root); const QString &filePath = QString(), Type type = Root);
TestTreeItem *copyWithoutChildren() override; TestTreeItem *copyWithoutChildren() override;
QVariant data(int column, int role) const override; QVariant data(int column, int role) const override;

View File

@@ -24,6 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "quicktestparser.h" #include "quicktestparser.h"
#include "quicktestframework.h"
#include "quicktesttreeitem.h" #include "quicktesttreeitem.h"
#include "quicktestvisitors.h" #include "quicktestvisitors.h"
#include "quicktest_utils.h" #include "quicktest_utils.h"
@@ -49,7 +50,7 @@ TestTreeItem *QuickTestParseResult::createTestTreeItem() const
if (itemType == TestTreeItem::Root || itemType == TestTreeItem::TestDataTag) if (itemType == TestTreeItem::Root || itemType == TestTreeItem::TestDataTag)
return nullptr; return nullptr;
QuickTestTreeItem *item = new QuickTestTreeItem(framework, name, fileName, itemType); QuickTestTreeItem *item = new QuickTestTreeItem(base, name, fileName, itemType);
item->setProFile(proFile); item->setProFile(proFile);
item->setLine(line); item->setLine(line);
item->setColumn(column); item->setColumn(column);

View File

@@ -37,7 +37,7 @@ namespace Internal {
class QuickTestParseResult : public TestParseResult class QuickTestParseResult : public TestParseResult
{ {
public: public:
explicit QuickTestParseResult(ITestFramework *framework) : TestParseResult(framework) {} explicit QuickTestParseResult(ITestBase *base) : TestParseResult(base) {}
TestTreeItem *createTestTreeItem() const override; TestTreeItem *createTestTreeItem() const override;
}; };

View File

@@ -290,7 +290,7 @@ TestTreeItem *QuickTestTreeItem::find(const TestParseResult *result)
case Root: case Root:
if (result->name.isEmpty()) if (result->name.isEmpty())
return unnamedQuickTests(); return unnamedQuickTests();
if (result->framework->grouping()) { if (static_cast<QuickTestFramework *>(result->base)->grouping()) {
const QString path = QFileInfo(result->fileName).absolutePath(); const QString path = QFileInfo(result->fileName).absolutePath();
TestTreeItem *group = findFirstLevelChild([path](TestTreeItem *group) { TestTreeItem *group = findFirstLevelChild([path](TestTreeItem *group) {
return group->filePath() == path; return group->filePath() == path;

View File

@@ -33,11 +33,11 @@ namespace Internal {
class QuickTestTreeItem : public TestTreeItem class QuickTestTreeItem : public TestTreeItem
{ {
public: public:
explicit QuickTestTreeItem(ITestFramework *framework, explicit QuickTestTreeItem(ITestBase *testBase,
const QString &name = QString(), const QString &name = QString(),
const QString &filePath = QString(), const QString &filePath = QString(),
Type type = Root) Type type = Root)
: TestTreeItem(framework, name, filePath, type) : TestTreeItem(testBase, name, filePath, type)
{} {}
TestTreeItem *copyWithoutChildren() override; TestTreeItem *copyWithoutChildren() override;

View File

@@ -24,6 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "autotestconstants.h" #include "autotestconstants.h"
#include "itestframework.h"
#include "itestparser.h" #include "itestparser.h"
#include "testconfiguration.h" #include "testconfiguration.h"
#include "testtreeitem.h" #include "testtreeitem.h"
@@ -38,9 +39,9 @@
namespace Autotest { namespace Autotest {
TestTreeItem::TestTreeItem(ITestFramework *framework, const QString &name, TestTreeItem::TestTreeItem(ITestBase *testBase, const QString &name,
const QString &filePath, Type type) const QString &filePath, Type type)
: m_framework(framework), : m_testBase(testBase),
m_name(name), m_name(name),
m_filePath(filePath), m_filePath(filePath),
m_type(type) m_type(type)
@@ -369,7 +370,7 @@ inline bool TestTreeItem::modifyName(const QString &name)
ITestFramework *TestTreeItem::framework() const ITestFramework *TestTreeItem::framework() const
{ {
return m_framework; return static_cast<ITestFramework *>(m_testBase);
} }
/* /*

View File

@@ -47,6 +47,7 @@ namespace Utils { class FilePath; }
namespace Autotest { namespace Autotest {
class ITestBase;
class ITestFramework; class ITestFramework;
class TestConfiguration; class TestConfiguration;
class TestParseResult; class TestParseResult;
@@ -73,7 +74,7 @@ public:
Naturally Naturally
}; };
explicit TestTreeItem(ITestFramework *framework, explicit TestTreeItem(ITestBase *testBase,
const QString &name = QString(), const QString &name = QString(),
const QString &filePath = QString(), const QString &filePath = QString(),
Type type = Root); Type type = Root);
@@ -154,7 +155,7 @@ private:
Cleared Cleared
}; };
ITestFramework *m_framework = nullptr; ITestBase *m_testBase = nullptr;
QString m_name; QString m_name;
QString m_filePath; QString m_filePath;
Qt::CheckState m_checked; Qt::CheckState m_checked;

View File

@@ -514,7 +514,7 @@ void TestTreeModel::revalidateCheckState(TestTreeItem *item)
void TestTreeModel::onParseResultReady(const TestParseResultPtr result) void TestTreeModel::onParseResultReady(const TestParseResultPtr result)
{ {
TestTreeItem *rootNode = result->framework->rootNode(); TestTreeItem *rootNode = result->base->rootNode();
QTC_ASSERT(rootNode, return); QTC_ASSERT(rootNode, return);
handleParseResult(result.data(), rootNode); handleParseResult(result.data(), rootNode);
} }
@@ -536,7 +536,7 @@ void Autotest::TestTreeModel::onDataChanged(const QModelIndex &topLeft,
void TestTreeModel::handleParseResult(const TestParseResult *result, TestTreeItem *parentNode) void TestTreeModel::handleParseResult(const TestParseResult *result, TestTreeItem *parentNode)
{ {
const bool groupingEnabled = result->framework->grouping(); const bool groupingEnabled = static_cast<ITestFramework *>(result->base)->grouping();
// lookup existing items // lookup existing items
if (TestTreeItem *toBeModified = parentNode->find(result)) { if (TestTreeItem *toBeModified = parentNode->find(result)) {
// found existing item... Do not remove // found existing item... Do not remove