forked from qt-creator/qt-creator
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:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user