AutoTest: Avoid global object pool

Instead of adding internal objects to the global
object pool keep them to handle their destruction.

Change-Id: Ie6217b2a820fbfa6f088fd9349225f5f8488f593
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Stenger
2018-02-01 09:17:56 +01:00
parent e984e5eacb
commit 56fbeb8a68
4 changed files with 19 additions and 8 deletions

View File

@@ -81,6 +81,9 @@ AutotestPlugin::AutotestPlugin()
AutotestPlugin::~AutotestPlugin()
{
delete m_navigationWidgetFactory;
delete m_resultsPane;
delete m_testSettingPage;
delete m_frameworkManager;
}
@@ -154,9 +157,9 @@ bool AutotestPlugin::initialize(const QStringList &arguments, QString *errorStri
m_frameworkManager->registerTestFramework(new GTestFramework);
m_frameworkManager->synchronizeSettings(ICore::settings());
addAutoReleasedObject(new TestSettingsPage(m_settings));
addAutoReleasedObject(new TestNavigationWidgetFactory);
addAutoReleasedObject(TestResultsPane::instance());
m_testSettingPage = new TestSettingsPage(m_settings);
m_navigationWidgetFactory = new TestNavigationWidgetFactory;
m_resultsPane = TestResultsPane::instance();
m_frameworkManager->activateFrameworksFromSettings(m_settings);
TestTreeModel::instance()->syncTestFrameworks();

View File

@@ -33,7 +33,10 @@ namespace Autotest {
namespace Internal {
class TestFrameworkManager;
class TestNavigationWidgetFactory;
class TestResultsPane;
struct TestSettings;
class TestSettingsPage;
class AutotestPlugin : public ExtensionSystem::IPlugin
{
@@ -61,6 +64,9 @@ private:
QList<QObject *> createTestObjects() const override;
const QSharedPointer<TestSettings> m_settings;
TestFrameworkManager *m_frameworkManager = nullptr;
TestSettingsPage *m_testSettingPage = nullptr;
TestNavigationWidgetFactory *m_navigationWidgetFactory = nullptr;
TestResultsPane *m_resultsPane = nullptr;
};
} // namespace Internal

View File

@@ -27,7 +27,6 @@
#include "autotestconstants.h"
#include "autotestplugin.h"
#include "iframeworksettings.h"
#include "itestframework.h"
#include "itestparser.h"
#include "itestsettingspage.h"
#include "testrunner.h"
@@ -66,6 +65,8 @@ TestFrameworkManager::~TestFrameworkManager()
{
delete m_testRunner;
delete m_testTreeModel;
qDeleteAll(m_frameworkSettingsPages);
m_frameworkSettingsPages.clear();
for (ITestFramework *framework : m_registeredFrameworks.values())
delete framework;
}
@@ -79,13 +80,11 @@ bool TestFrameworkManager::registerTestFramework(ITestFramework *framework)
qCDebug(LOG) << "Registering" << id;
m_registeredFrameworks.insert(id, framework);
AutotestPlugin *plugin = AutotestPlugin::instance();
if (framework->hasFrameworkSettings()) {
QSharedPointer<IFrameworkSettings> frameworkSettings(framework->createFrameworkSettings());
m_frameworkSettings.insert(id, frameworkSettings);
if (auto page = framework->createSettingsPage(frameworkSettings))
plugin->addAutoReleasedObject(page);
m_frameworkSettingsPages.append(page);
}
return true;
}

View File

@@ -25,6 +25,8 @@
#pragma once
#include "itestframework.h"
#include <QHash>
#include <QSharedPointer>
@@ -38,8 +40,8 @@ namespace Autotest {
namespace Internal {
class IFrameworkSettings;
class ITestFramework;
class ITestParser;
class ITestSettingsPage;
class TestRunner;
struct TestSettings;
class TestTreeItem;
@@ -72,6 +74,7 @@ private:
explicit TestFrameworkManager();
QHash<Core::Id, ITestFramework *> m_registeredFrameworks;
QHash<Core::Id, QSharedPointer<IFrameworkSettings> > m_frameworkSettings;
QVector<ITestSettingsPage *> m_frameworkSettingsPages;
TestTreeModel *m_testTreeModel;
TestRunner *m_testRunner;