AutoTest: Dissolve TestFrameworkManager

It's a handful functions around two independent lists.

Change-Id: I0a7015deef27a77d4e67488e1f9b6c7a8d71133b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-07-27 16:40:46 +02:00
parent 8a6e4bea9e
commit 3ad3b6a975
3 changed files with 49 additions and 64 deletions

View File

@@ -99,7 +99,6 @@ public:
TestCodeParser m_testCodeParser; TestCodeParser m_testCodeParser;
TestTreeModel m_testTreeModel{&m_testCodeParser}; TestTreeModel m_testTreeModel{&m_testCodeParser};
TestRunner m_testRunner; TestRunner m_testRunner;
TestFrameworkManager m_frameworkManager;
#ifdef WITH_TESTS #ifdef WITH_TESTS
LoadProjectScenario m_loadProjectScenario{&m_testTreeModel}; LoadProjectScenario m_loadProjectScenario{&m_testTreeModel};
#endif #endif
@@ -128,15 +127,15 @@ AutotestPluginPrivate::AutotestPluginPrivate()
{ {
dd = this; // Needed as the code below access it via the static plugin interface dd = this; // Needed as the code below access it via the static plugin interface
initializeMenuEntries(); initializeMenuEntries();
m_frameworkManager.registerTestFramework(&theQtTestFramework()); TestFrameworkManager::registerTestFramework(&theQtTestFramework());
m_frameworkManager.registerTestFramework(&theQuickTestFramework()); TestFrameworkManager::registerTestFramework(&theQuickTestFramework());
m_frameworkManager.registerTestFramework(&theGTestFramework()); TestFrameworkManager::registerTestFramework(&theGTestFramework());
m_frameworkManager.registerTestFramework(&theBoostTestFramework()); TestFrameworkManager::registerTestFramework(&theBoostTestFramework());
m_frameworkManager.registerTestFramework(&theCatchFramework()); TestFrameworkManager::registerTestFramework(&theCatchFramework());
m_frameworkManager.registerTestTool(&theCTestTool()); TestFrameworkManager::registerTestTool(&theCTestTool());
TestFrameworkManager::synchronizeSettings();
m_frameworkManager.synchronizeSettings();
m_resultsPane = TestResultsPane::instance(); m_resultsPane = TestResultsPane::instance();
auto panelFactory = new ProjectExplorer::ProjectPanelFactory(); auto panelFactory = new ProjectExplorer::ProjectPanelFactory();

View File

@@ -11,92 +11,89 @@
using namespace Utils; using namespace Utils;
namespace Autotest { namespace Autotest::TestFrameworkManager {
static TestFrameworkManager *s_instance = nullptr; TestFrameworks &testFrameworks()
TestFrameworkManager::TestFrameworkManager()
{ {
s_instance = this; static TestFrameworks theFrameworks;
return theFrameworks;
} }
TestFrameworkManager::~TestFrameworkManager() TestTools &testTools()
{ {
s_instance = nullptr; static TestTools theTools;
return theTools;
} }
void TestFrameworkManager::registerTestFramework(ITestFramework *framework) void registerTestFramework(ITestFramework *framework)
{ {
QTC_ASSERT(framework, return); QTC_ASSERT(framework, return);
QTC_ASSERT(!m_registeredFrameworks.contains(framework), return); QTC_ASSERT(!testFrameworks().contains(framework), return);
// TODO check for unique priority before registering // TODO check for unique priority before registering
m_registeredFrameworks.append(framework); testFrameworks().append(framework);
Utils::sort(m_registeredFrameworks, &ITestFramework::priority); Utils::sort(testFrameworks(), &ITestFramework::priority);
} }
void TestFrameworkManager::registerTestTool(ITestTool *testTool) void registerTestTool(ITestTool *testTool)
{ {
QTC_ASSERT(testTool, return); QTC_ASSERT(testTool, return);
QTC_ASSERT(!m_registeredTestTools.contains(testTool), return); QTC_ASSERT(!testTools().contains(testTool), return);
m_registeredTestTools.append(testTool); testTools().append(testTool);
} }
void TestFrameworkManager::activateFrameworksAndToolsFromSettings() void activateFrameworksAndToolsFromSettings()
{ {
const Internal::TestSettings &settings = Internal::testSettings(); const Internal::TestSettings &settings = Internal::testSettings();
for (ITestFramework *framework : std::as_const(s_instance->m_registeredFrameworks)) { for (ITestFramework *framework : std::as_const(testFrameworks())) {
framework->setActive(settings.frameworks.value(framework->id(), false)); framework->setActive(settings.frameworks.value(framework->id(), false));
framework->setGrouping(settings.frameworksGrouping.value(framework->id(), false)); framework->setGrouping(settings.frameworksGrouping.value(framework->id(), false));
} }
for (ITestTool *testTool : std::as_const(s_instance->m_registeredTestTools)) for (ITestTool *testTool : std::as_const(testTools()))
testTool->setActive(settings.tools.value(testTool->id(), false)); testTool->setActive(settings.tools.value(testTool->id(), false));
} }
const TestFrameworks TestFrameworkManager::registeredFrameworks() const TestFrameworks registeredFrameworks()
{ {
return s_instance->m_registeredFrameworks; return testFrameworks();
} }
const TestTools TestFrameworkManager::registeredTestTools() const TestTools registeredTestTools()
{ {
return s_instance->m_registeredTestTools; return testTools();
} }
ITestFramework *TestFrameworkManager::frameworkForId(Id frameworkId) ITestFramework *frameworkForId(Id frameworkId)
{ {
return Utils::findOrDefault(s_instance->m_registeredFrameworks, return Utils::findOrDefault(testFrameworks(), [frameworkId](ITestFramework *framework) {
[frameworkId](ITestFramework *framework) {
return framework->id() == frameworkId; return framework->id() == frameworkId;
}); });
} }
ITestTool *TestFrameworkManager::testToolForId(Id testToolId) ITestTool *testToolForId(Id testToolId)
{ {
return Utils::findOrDefault(s_instance->m_registeredTestTools, return Utils::findOrDefault(testTools(), [testToolId](ITestTool *testTool) {
[testToolId](ITestTool *testTool) {
return testTool->id() == testToolId; return testTool->id() == testToolId;
}); });
} }
ITestTool *TestFrameworkManager::testToolForBuildSystemId(Id buildSystemId) ITestTool *testToolForBuildSystemId(Id buildSystemId)
{ {
if (!buildSystemId.isValid()) if (!buildSystemId.isValid())
return nullptr; return nullptr;
return Utils::findOrDefault(s_instance->m_registeredTestTools, return Utils::findOrDefault(testTools(), [&buildSystemId](ITestTool *testTool) {
[&buildSystemId](ITestTool *testTool) {
return testTool->buildSystemId() == buildSystemId; return testTool->buildSystemId() == buildSystemId;
}); });
} }
void TestFrameworkManager::synchronizeSettings() void synchronizeSettings()
{ {
Internal::testSettings().fromSettings(); Internal::testSettings().fromSettings();
for (ITestFramework *framework : std::as_const(m_registeredFrameworks)) for (ITestFramework *framework : std::as_const(testFrameworks()))
framework->readSettings(); framework->readSettings();
for (ITestTool *testTool : std::as_const(m_registeredTestTools)) for (ITestTool *testTool : std::as_const(testTools()))
testTool->readSettings(); testTool->readSettings();
} }
} // namespace Autotest } // Autotest::TestframeworkManager

View File

@@ -5,29 +5,18 @@
#include "itestframework.h" #include "itestframework.h"
namespace Autotest { namespace Autotest::TestFrameworkManager {
class TestFrameworkManager final void registerTestFramework(ITestFramework *framework);
{ void registerTestTool(ITestTool *testTool);
void synchronizeSettings();
public: ITestFramework *frameworkForId(Utils::Id frameworkId);
TestFrameworkManager(); ITestTool *testToolForId(Utils::Id testToolId);
~TestFrameworkManager(); ITestTool *testToolForBuildSystemId(Utils::Id buildSystemId);
void activateFrameworksAndToolsFromSettings();
const TestFrameworks registeredFrameworks();
const TestTools registeredTestTools();
void registerTestFramework(ITestFramework *framework);
void registerTestTool(ITestTool *testTool);
void synchronizeSettings();
static ITestFramework *frameworkForId(Utils::Id frameworkId); } // Autotest::TestFrameworkManager
static ITestTool *testToolForId(Utils::Id testToolId);
static ITestTool *testToolForBuildSystemId(Utils::Id buildSystemId);
static void activateFrameworksAndToolsFromSettings();
static const TestFrameworks registeredFrameworks();
static const TestTools registeredTestTools();
private:
TestFrameworks m_registeredFrameworks;
TestTools m_registeredTestTools;
};
} // namespace Autotest