diff options
Diffstat (limited to 'src/plugins/autotest/testframeworkmanager.cpp')
-rw-r--r-- | src/plugins/autotest/testframeworkmanager.cpp | 171 |
1 files changed, 19 insertions, 152 deletions
diff --git a/src/plugins/autotest/testframeworkmanager.cpp b/src/plugins/autotest/testframeworkmanager.cpp index 43eb59d847..1d663a6931 100644 --- a/src/plugins/autotest/testframeworkmanager.cpp +++ b/src/plugins/autotest/testframeworkmanager.cpp @@ -27,23 +27,15 @@ #include "autotestconstants.h" #include "autotestplugin.h" #include "iframeworksettings.h" -#include "itestparser.h" -#include "testrunner.h" #include "testsettings.h" -#include "testtreeitem.h" -#include "testtreemodel.h" - -#include <coreplugin/dialogs/ioptionspage.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> -#include <QLoggingCategory> #include <QSettings> -static Q_LOGGING_CATEGORY(LOG, "qtc.autotest.frameworkmanager", QtWarningMsg) - using namespace Core; +using namespace Utils; namespace Autotest { @@ -51,178 +43,53 @@ static TestFrameworkManager *s_instance = nullptr; TestFrameworkManager::TestFrameworkManager() { - m_testTreeModel = TestTreeModel::instance(); - m_testRunner = Internal::TestRunner::instance(); s_instance = this; } -TestFrameworkManager *TestFrameworkManager::instance() -{ - if (!s_instance) - return new TestFrameworkManager; - return s_instance; -} - TestFrameworkManager::~TestFrameworkManager() { - delete m_testRunner; - delete m_testTreeModel; - qDeleteAll(m_frameworkSettingsPages); - m_frameworkSettingsPages.clear(); - for (ITestFramework *framework : m_registeredFrameworks.values()) - delete framework; + qDeleteAll(m_registeredFrameworks); + s_instance = nullptr; } bool TestFrameworkManager::registerTestFramework(ITestFramework *framework) { QTC_ASSERT(framework, return false); - Id id = Id(Constants::FRAMEWORK_PREFIX).withSuffix(framework->name()); - QTC_ASSERT(!m_registeredFrameworks.contains(id), delete framework; return false); + QTC_ASSERT(!m_registeredFrameworks.contains(framework), return false); // TODO check for unique priority before registering - qCDebug(LOG) << "Registering" << id; - m_registeredFrameworks.insert(id, framework); - - if (framework->hasFrameworkSettings()) { - QSharedPointer<IFrameworkSettings> frameworkSettings(framework->createFrameworkSettings()); - m_frameworkSettings.insert(id, frameworkSettings); - if (auto page = framework->createSettingsPage(frameworkSettings)) - m_frameworkSettingsPages.append(page); - } + m_registeredFrameworks.append(framework); + Utils::sort(m_registeredFrameworks, &ITestFramework::priority); return true; } -void TestFrameworkManager::activateFrameworksFromSettings(QSharedPointer<Internal::TestSettings> settings) -{ - FrameworkIterator it = m_registeredFrameworks.begin(); - FrameworkIterator end = m_registeredFrameworks.end(); - for ( ; it != end; ++it) { - it.value()->setActive(settings->frameworks.value(it.key(), false)); - it.value()->setGrouping(settings->frameworksGrouping.value(it.key(), false)); - } -} - -QString TestFrameworkManager::frameworkNameForId(const Id &id) const -{ - ITestFramework *framework = m_registeredFrameworks.value(id, nullptr); - return framework ? QString::fromLatin1(framework->name()) : QString(); -} - -QList<Id> TestFrameworkManager::registeredFrameworkIds() const -{ - return m_registeredFrameworks.keys(); -} - -QList<Id> TestFrameworkManager::sortedRegisteredFrameworkIds() const -{ - QList<Id> registered = m_registeredFrameworks.keys(); - Utils::sort(registered, [this] (const Id &lhs, const Id &rhs) { - return m_registeredFrameworks[lhs]->priority() < m_registeredFrameworks[rhs]->priority(); - }); - qCDebug(LOG) << "Registered frameworks sorted by priority" << registered; - return registered; -} - -QList<Id> TestFrameworkManager::activeFrameworkIds() const +void TestFrameworkManager::activateFrameworksFromSettings(const Internal::TestSettings *settings) { - QList<Id> active; - FrameworkIterator it = m_registeredFrameworks.begin(); - FrameworkIterator end = m_registeredFrameworks.end(); - for ( ; it != end; ++it) { - if (it.value()->active()) - active.append(it.key()); + for (ITestFramework *framework : qAsConst(s_instance->m_registeredFrameworks)) { + framework->setActive(settings->frameworks.value(framework->id(), false)); + framework->setGrouping(settings->frameworksGrouping.value(framework->id(), false)); } - return active; -} - -QList<Id> TestFrameworkManager::sortedActiveFrameworkIds() const -{ - QList<Id> active = activeFrameworkIds(); - Utils::sort(active, [this] (const Id &lhs, const Id &rhs) { - return m_registeredFrameworks[lhs]->priority() < m_registeredFrameworks[rhs]->priority(); - }); - qCDebug(LOG) << "Active frameworks sorted by priority" << active; - return active; -} - -TestTreeItem *TestFrameworkManager::rootNodeForTestFramework(const Id &frameworkId) const -{ - ITestFramework *framework = m_registeredFrameworks.value(frameworkId, nullptr); - return framework ? framework->rootNode() : nullptr; } -ITestParser *TestFrameworkManager::testParserForTestFramework(const Id &frameworkId) const +TestFrameworks TestFrameworkManager::registeredFrameworks() { - ITestFramework *framework = m_registeredFrameworks.value(frameworkId, nullptr); - if (!framework) - return nullptr; - ITestParser *testParser = framework->testParser(); - qCDebug(LOG) << "Setting" << frameworkId << "as Id for test parser"; - testParser->setId(frameworkId); - return testParser; + return s_instance->m_registeredFrameworks; } -QSharedPointer<IFrameworkSettings> TestFrameworkManager::settingsForTestFramework( - const Id &frameworkId) const +ITestFramework *TestFrameworkManager::frameworkForId(Id frameworkId) { - return m_frameworkSettings.contains(frameworkId) ? m_frameworkSettings.value(frameworkId) - : QSharedPointer<IFrameworkSettings>(); + return Utils::findOrDefault(s_instance->m_registeredFrameworks, + [frameworkId](ITestFramework *framework) { + return framework->id() == frameworkId; + }); } void TestFrameworkManager::synchronizeSettings(QSettings *s) { Internal::AutotestPlugin::settings()->fromSettings(s); - for (const Id &id : m_frameworkSettings.keys()) { - QSharedPointer<IFrameworkSettings> fSettings = settingsForTestFramework(id); - if (!fSettings.isNull()) + for (ITestFramework *framework : qAsConst(m_registeredFrameworks)) { + if (IFrameworkSettings *fSettings = framework->frameworkSettings()) fSettings->fromSettings(s); } } -bool TestFrameworkManager::isActive(const Id &frameworkId) const -{ - ITestFramework *framework = m_registeredFrameworks.value(frameworkId); - return framework ? framework->active() : false; -} - -bool TestFrameworkManager::groupingEnabled(const Id &frameworkId) const -{ - ITestFramework *framework = m_registeredFrameworks.value(frameworkId); - return framework ? framework->grouping() : false; -} - -void TestFrameworkManager::setGroupingEnabledFor(const Id &frameworkId, bool enabled) -{ - if (ITestFramework *framework = m_registeredFrameworks.value(frameworkId)) - framework->setGrouping(enabled); -} - -QString TestFrameworkManager::groupingToolTip(const Id &frameworkId) const -{ - if (ITestFramework *framework = m_registeredFrameworks.value(frameworkId)) - return framework->groupingToolTip(); - return QString(); -} - -bool TestFrameworkManager::hasActiveFrameworks() const -{ - for (ITestFramework *framework : m_registeredFrameworks.values()) { - if (framework->active()) - return true; - } - return false; -} - -unsigned TestFrameworkManager::priority(const Id &frameworkId) const -{ - if (ITestFramework *framework = m_registeredFrameworks.value(frameworkId)) - return framework->priority(); - return unsigned(-1); -} - -Id ITestFramework::settingsId() const -{ - return Core::Id(Constants::SETTINGSPAGE_PREFIX) - .withSuffix(QString("%1.%2").arg(priority()).arg(QLatin1String(name()))); -} - } // namespace Autotest |