AutoTest: Introduce active state for test frameworks

Change-Id: I0fddce91a239c0a51352a25e34a221fd8880b733
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
Christian Stenger
2016-06-06 15:35:00 +02:00
parent c64fa0d329
commit 8cba580343
15 changed files with 285 additions and 137 deletions

View File

@@ -28,6 +28,7 @@
#include "itestframework.h"
#include "itestparser.h"
#include "testrunner.h"
#include "testsettings.h"
#include "testtreeitem.h"
#include "testtreemodel.h"
@@ -61,6 +62,8 @@ TestFrameworkManager::~TestFrameworkManager()
{
delete m_testRunner;
delete m_testTreeModel;
for (ITestFramework *framework : m_registeredFrameworks.values())
delete framework;
}
bool TestFrameworkManager::registerTestFramework(ITestFramework *framework)
@@ -68,26 +71,61 @@ bool TestFrameworkManager::registerTestFramework(ITestFramework *framework)
QTC_ASSERT(framework, return false);
Core::Id id = Core::Id(Constants::FRAMEWORK_PREFIX).withSuffix(framework->name());
QTC_ASSERT(!m_registeredFrameworks.contains(id), return false);
// check for unique priority?
// TODO check for unique priority before registering
qCDebug(LOG) << "Registering" << id;
m_registeredFrameworks.insert(id, framework);
return true;
}
void TestFrameworkManager::activateFrameworksFromSettings(QSharedPointer<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));
}
QString TestFrameworkManager::frameworkNameForId(const Core::Id &id) const
{
ITestFramework *framework = m_registeredFrameworks.value(id, 0);
return framework ? QString::fromLatin1(framework->name()) : QString();
}
QList<Core::Id> TestFrameworkManager::registeredFrameworkIds() const
{
return m_registeredFrameworks.keys();
}
QList<Core::Id> TestFrameworkManager::sortedFrameworkIds() const
QList<Core::Id> TestFrameworkManager::sortedRegisteredFrameworkIds() const
{
QList<Core::Id> sorted = registeredFrameworkIds();
qCDebug(LOG) << "Registered frameworks" << sorted;
Utils::sort(sorted, [this] (const Core::Id &lhs, const Core::Id &rhs) {
QList<Core::Id> registered = m_registeredFrameworks.keys();
Utils::sort(registered, [this] (const Core::Id &lhs, const Core::Id &rhs) {
return m_registeredFrameworks[lhs]->priority() < m_registeredFrameworks[rhs]->priority();
});
qCDebug(LOG) << "Sorted by priority" << sorted;
return sorted;
qCDebug(LOG) << "Registered frameworks sorted by priority" << registered;
return registered;
}
QVector<Core::Id> TestFrameworkManager::activeFrameworkIds() const
{
QVector<Core::Id> active;
FrameworkIterator it = m_registeredFrameworks.begin();
FrameworkIterator end = m_registeredFrameworks.end();
for ( ; it != end; ++it) {
if (it.value()->active())
active.append(it.key());
}
return active;
}
QVector<Core::Id> TestFrameworkManager::sortedActiveFrameworkIds() const
{
QVector<Core::Id> active = activeFrameworkIds();
Utils::sort(active, [this] (const Core::Id &lhs, const Core::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 Core::Id &frameworkId) const
@@ -107,5 +145,11 @@ ITestParser *TestFrameworkManager::testParserForTestFramework(const Core::Id &fr
return testParser;
}
bool TestFrameworkManager::isActive(const Core::Id &frameworkId) const
{
ITestFramework *framework = m_registeredFrameworks.value(frameworkId);
return framework ? framework->active() : false;
}
} // namespace Internal
} // namespace Autotest