forked from qt-creator/qt-creator
AutoTest: Reparse only newly added frameworks
Instead of re-parsing all test frameworks trigger a reparse just for the newly added as results for the other should not have changed. Change-Id: I6eb53da04bb927a884d6431e137bfe68f391f2ad Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -126,7 +126,6 @@ void TestCodeParser::syncTestFrameworks(const QList<Core::Id> &frameworkIds)
|
|||||||
QTC_ASSERT(testParser, continue);
|
QTC_ASSERT(testParser, continue);
|
||||||
m_testCodeParsers.append(testParser);
|
m_testCodeParsers.append(testParser);
|
||||||
}
|
}
|
||||||
updateTestTree();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestCodeParser::emitUpdateTestTree(ITestParser *parser)
|
void TestCodeParser::emitUpdateTestTree(ITestParser *parser)
|
||||||
|
@@ -220,27 +220,26 @@ void TestTreeModel::synchronizeTestFrameworks()
|
|||||||
|
|
||||||
// pre-check to avoid further processing when frameworks are unchanged
|
// pre-check to avoid further processing when frameworks are unchanged
|
||||||
Utils::TreeItem *invisibleRoot = rootItem();
|
Utils::TreeItem *invisibleRoot = rootItem();
|
||||||
const int count = invisibleRoot->childCount();
|
QSet<Core::Id> newlyAdded;
|
||||||
if (count == sortedIds.size()) {
|
QList<Utils::TreeItem *> oldFrameworkRoots;
|
||||||
bool different = false;
|
for (Utils::TreeItem *oldFrameworkRoot : *invisibleRoot)
|
||||||
QList<Core::Id> registered = manager->sortedRegisteredFrameworkIds();
|
oldFrameworkRoots.append(oldFrameworkRoot);
|
||||||
for (int i = 0; i < count; ++i) {
|
|
||||||
if (manager->rootNodeForTestFramework(sortedIds[i]) != invisibleRoot->childAt(i)) {
|
|
||||||
different = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!different)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove all currently registered
|
for (Utils::TreeItem *oldFrameworkRoot : oldFrameworkRoots)
|
||||||
removeTestRootNodes();
|
takeItem(oldFrameworkRoot); // do NOT delete the ptr is still held by TestFrameworkManager
|
||||||
|
|
||||||
for (const Core::Id &id : sortedIds)
|
for (const Core::Id &id : sortedIds) {
|
||||||
rootItem()->appendChild(manager->rootNodeForTestFramework(id));
|
TestTreeItem *frameworkRootNode = manager->rootNodeForTestFramework(id);
|
||||||
|
invisibleRoot->appendChild(frameworkRootNode);
|
||||||
|
if (!oldFrameworkRoots.removeOne(frameworkRootNode))
|
||||||
|
newlyAdded.insert(id);
|
||||||
|
}
|
||||||
|
for (Utils::TreeItem *oldFrameworkRoot : oldFrameworkRoots)
|
||||||
|
oldFrameworkRoot->removeChildren();
|
||||||
|
|
||||||
m_parser->syncTestFrameworks(sortedIds);
|
m_parser->syncTestFrameworks(sortedIds);
|
||||||
|
if (!newlyAdded.isEmpty())
|
||||||
|
m_parser->updateTestTree(newlyAdded);
|
||||||
emit updatedActiveFrameworks(sortedIds.size());
|
emit updatedActiveFrameworks(sortedIds.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user