forked from qt-creator/qt-creator
QmlJS: Track futures to allow testing
Tests often want to wait for all async tasks to finish before progressing. Change-Id: I61738df730ca341b5c9d227569d961cd1991b296 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Philip Van Hoof <philip@codeminded.be>
This commit is contained in:
@@ -305,7 +305,7 @@ void PluginDumper::qmlPluginTypeDumpDone(int exitCode)
|
||||
future.reportFinished(&infos);
|
||||
});
|
||||
|
||||
Utils::onFinished(future, this,
|
||||
auto finalFuture = Utils::onFinished(future, this,
|
||||
[this, libraryInfo, privatePlugin, libraryPath] (const QFuture<CppQmlTypesInfo>& future) {
|
||||
CppQmlTypesInfo infos = future.result();
|
||||
|
||||
@@ -329,6 +329,7 @@ void PluginDumper::qmlPluginTypeDumpDone(int exitCode)
|
||||
|
||||
m_modelManager->updateLibraryInfo(libraryPath, libInfo);
|
||||
});
|
||||
m_modelManager->addFuture(finalFuture);
|
||||
} else {
|
||||
libraryInfo.setPluginTypeInfoStatus(LibraryInfo::DumpDone);
|
||||
libraryInfo.updateFingerprint();
|
||||
@@ -525,12 +526,12 @@ void PluginDumper::loadQmltypesFile(const QStringList &qmltypesFilePaths,
|
||||
const QString &libraryPath,
|
||||
QmlJS::LibraryInfo libraryInfo)
|
||||
{
|
||||
Utils::onFinished(loadQmlTypeDescription(qmltypesFilePaths), this, [=](const QFuture<PluginDumper::QmlTypeDescription> &typesFuture)
|
||||
auto future = Utils::onFinished(loadQmlTypeDescription(qmltypesFilePaths), this, [=](const QFuture<PluginDumper::QmlTypeDescription> &typesFuture)
|
||||
{
|
||||
PluginDumper::QmlTypeDescription typesResult = typesFuture.result();
|
||||
if (!typesResult.dependencies.isEmpty())
|
||||
{
|
||||
Utils::onFinished(loadDependencies(typesResult.dependencies, QSharedPointer<QSet<QString>>()), this,
|
||||
auto depFuture = Utils::onFinished(loadDependencies(typesResult.dependencies, QSharedPointer<QSet<QString>>()), this,
|
||||
[typesResult, libraryInfo, libraryPath, this] (const QFuture<PluginDumper::DependencyInfo> &loadFuture)
|
||||
{
|
||||
PluginDumper::DependencyInfo loadResult = loadFuture.result();
|
||||
@@ -548,6 +549,7 @@ void PluginDumper::loadQmltypesFile(const QStringList &qmltypesFilePaths,
|
||||
typesResult.moduleApis, objects);
|
||||
m_modelManager->updateLibraryInfo(libraryPath, libInfo);
|
||||
});
|
||||
m_modelManager->addFuture(depFuture);
|
||||
} else {
|
||||
QmlJS::LibraryInfo libInfo = libraryInfo;
|
||||
prepareLibraryInfo(libInfo, libraryPath, typesResult.dependencies,
|
||||
@@ -556,6 +558,7 @@ void PluginDumper::loadQmltypesFile(const QStringList &qmltypesFilePaths,
|
||||
m_modelManager->updateLibraryInfo(libraryPath, libInfo);
|
||||
}
|
||||
});
|
||||
m_modelManager->addFuture(future);
|
||||
}
|
||||
|
||||
void PluginDumper::runQmlDump(const QmlJS::ModelManagerInterface::ProjectInfo &info,
|
||||
|
||||
Reference in New Issue
Block a user