From d849e77fd2bc748f04cc3f15faafb8f1c8328670 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Sun, 7 May 2023 09:59:36 +0200 Subject: Remove Loader class It was just an unnecessary indirection in the end. Change-Id: I956ed4858dcc2b528be1e1fce9ab24862b99ff62 Reviewed-by: Ivan Komissarov --- src/lib/corelib/CMakeLists.txt | 2 - src/lib/corelib/api/internaljobs.cpp | 8 +- src/lib/corelib/buildgraph/buildgraphloader.cpp | 18 +-- src/lib/corelib/corelib.qbs | 2 - src/lib/corelib/loader/loader.cpp | 153 ------------------------ src/lib/corelib/loader/loader.h | 84 ------------- src/lib/corelib/loader/projectresolver.cpp | 76 +++++++++--- src/lib/corelib/loader/projectresolver.h | 9 +- tests/auto/language/tst_language.cpp | 148 +++++++++++------------ tests/auto/language/tst_language.h | 6 +- 10 files changed, 154 insertions(+), 352 deletions(-) delete mode 100644 src/lib/corelib/loader/loader.cpp delete mode 100644 src/lib/corelib/loader/loader.h diff --git a/src/lib/corelib/CMakeLists.txt b/src/lib/corelib/CMakeLists.txt index ee551b2ca..0df30295b 100644 --- a/src/lib/corelib/CMakeLists.txt +++ b/src/lib/corelib/CMakeLists.txt @@ -248,8 +248,6 @@ set(LOADER_SOURCES itemreaderastvisitor.h itemreadervisitorstate.cpp itemreadervisitorstate.h - loader.cpp - loader.h localprofiles.cpp localprofiles.h moduleinstantiator.cpp diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp index 8aef79595..894c7a8b1 100644 --- a/src/lib/corelib/api/internaljobs.cpp +++ b/src/lib/corelib/api/internaljobs.cpp @@ -50,7 +50,7 @@ #include #include #include -#include +#include #include #include #include @@ -324,9 +324,9 @@ void InternalSetupProjectJob::execute() void InternalSetupProjectJob::resolveProjectFromScratch(ScriptEngine *engine) { - Loader loader(engine, logger()); - loader.setProgressObserver(observer()); - m_newProject = loader.loadProject(m_parameters); + ProjectResolver resolver(engine, logger()); + resolver.setProgressObserver(observer()); + m_newProject = resolver.resolve(m_parameters); QBS_CHECK(m_newProject); } diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index f0db5f81f..31cda94ee 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -52,7 +52,7 @@ #include #include #include -#include +#include #include #include #include @@ -338,19 +338,19 @@ void BuildGraphLoader::trackProjectChanges() markTransformersForChangeTracking(allRestoredProducts); if (!m_parameters.overrideBuildGraphData()) m_parameters.setEnvironment(restoredProject->environment); - Loader ldr(m_evalContext->engine(), m_logger); - ldr.setProgressObserver(m_evalContext->observer()); - ldr.setOldProjectProbes(restoredProject->probes); + ProjectResolver resolver(m_evalContext->engine(), m_logger); + resolver.setProgressObserver(m_evalContext->observer()); + resolver.setOldProjectProbes(restoredProject->probes); if (!m_parameters.forceProbeExecution()) - ldr.setStoredModuleProviderInfo(restoredProject->moduleProviderInfo); - ldr.setLastResolveTime(restoredProject->lastStartResolveTime); + resolver.setStoredModuleProviderInfo(restoredProject->moduleProviderInfo); + resolver.setLastResolveTime(restoredProject->lastStartResolveTime); QHash> restoredProbes; for (const auto &restoredProduct : qAsConst(allRestoredProducts)) restoredProbes.insert(restoredProduct->uniqueName(), restoredProduct->probes); - ldr.setOldProductProbes(restoredProbes); + resolver.setOldProductProbes(restoredProbes); if (!m_parameters.overrideBuildGraphData()) - ldr.setStoredProfiles(restoredProject->profileConfigs); - m_result.newlyResolvedProject = ldr.loadProject(m_parameters); + resolver.setStoredProfiles(restoredProject->profileConfigs); + m_result.newlyResolvedProject = resolver.resolve(m_parameters); std::vector allNewlyResolvedProducts = m_result.newlyResolvedProject->allProducts(); diff --git a/src/lib/corelib/corelib.qbs b/src/lib/corelib/corelib.qbs index 1056970cf..532148d2c 100644 --- a/src/lib/corelib/corelib.qbs +++ b/src/lib/corelib/corelib.qbs @@ -337,8 +337,6 @@ QbsLibrary { "itemreaderastvisitor.h", "itemreadervisitorstate.cpp", "itemreadervisitorstate.h", - "loader.cpp", - "loader.h", "localprofiles.cpp", "localprofiles.h", "moduleinstantiator.cpp", diff --git a/src/lib/corelib/loader/loader.cpp b/src/lib/corelib/loader/loader.cpp deleted file mode 100644 index e0ef3ca64..000000000 --- a/src/lib/corelib/loader/loader.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qbs. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "loader.h" - -#include "projectresolver.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -namespace qbs { -namespace Internal { - -Loader::Loader(ScriptEngine *engine, Logger logger) - : m_logger(std::move(logger)) - , m_progressObserver(nullptr) - , m_engine(engine) -{ - m_logger.storeWarnings(); -} - -void Loader::setProgressObserver(ProgressObserver *observer) -{ - m_progressObserver = observer; -} - -void Loader::setOldProjectProbes(const std::vector &oldProbes) -{ - m_oldProjectProbes = oldProbes; -} - -void Loader::setOldProductProbes(const QHash> &oldProbes) -{ - m_oldProductProbes = oldProbes; -} - -void Loader::setStoredProfiles(const QVariantMap &profiles) -{ - m_storedProfiles = profiles; -} - -void Loader::setStoredModuleProviderInfo(const StoredModuleProviderInfo &providerInfo) -{ - m_storedModuleProviderInfo = providerInfo; -} - -TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &_parameters) -{ - SetupProjectParameters parameters = _parameters; - - if (parameters.topLevelProfile().isEmpty()) { - Settings settings(parameters.settingsDirectory()); - QString profileName = settings.defaultProfile(); - if (profileName.isEmpty()) { - m_logger.qbsDebug() << Tr::tr("No profile specified and no default profile exists. " - "Using default property values."); - profileName = Profile::fallbackName(); - } - parameters.setTopLevelProfile(profileName); - parameters.expandBuildConfiguration(); - } - - parameters.finalizeProjectFilePath(); - QBS_CHECK(QFileInfo(parameters.projectFilePath()).isAbsolute()); - m_logger.qbsDebug() << "Using project file '" - << QDir::toNativeSeparators(parameters.projectFilePath()) << "'."; - - m_engine->setEnvironment(parameters.adjustedEnvironment()); - m_engine->checkAndClearException({}); - m_engine->clearImportsCache(); - m_engine->clearRequestedProperties(); - m_engine->enableProfiling(parameters.logElapsedTime()); - m_logger.clearWarnings(); - EvalContextSwitcher evalContextSwitcher(m_engine, EvalContext::PropertyEvaluation); - - // At this point, we cannot set a sensible total effort, because we know nothing about - // the project yet. That's why we use a placeholder here, so the user at least - // sees that an operation is starting. The real total effort will be set later when - // we have enough information. - if (m_progressObserver) { - m_progressObserver->initialize(Tr::tr("Resolving project for configuration %1") - .arg(TopLevelProject::deriveId(parameters.finalBuildConfigurationTree())), 1); - m_progressObserver->setScriptEngine(m_engine); - } - - const FileTime resolveTime = FileTime::currentTime(); - ProjectResolver resolver(parameters, m_engine, m_logger); - resolver.setProgressObserver(m_progressObserver); - resolver.setOldProjectProbes(m_oldProjectProbes); - resolver.setOldProductProbes(m_oldProductProbes); - resolver.setLastResolveTime(m_lastResolveTime); - resolver.setStoredProfiles(m_storedProfiles); - resolver.setStoredModuleProviderInfo(m_storedModuleProviderInfo); - TopLevelProjectPtr project = resolver.resolve(); - project->lastStartResolveTime = resolveTime; - project->lastEndResolveTime = FileTime::currentTime(); - - // E.g. if the top-level project is disabled. - if (m_progressObserver) - m_progressObserver->setFinished(); - - return project; -} - -} // namespace Internal -} // namespace qbs diff --git a/src/lib/corelib/loader/loader.h b/src/lib/corelib/loader/loader.h deleted file mode 100644 index 227b5cdd9..000000000 --- a/src/lib/corelib/loader/loader.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qbs. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef QBS_LOADER_H -#define QBS_LOADER_H - -#include -#include -#include -#include - -#include - -namespace qbs { -class Settings; -class SetupProjectParameters; -namespace Internal { -class Logger; -class ProgressObserver; -class ScriptEngine; - -class QBS_AUTOTEST_EXPORT Loader -{ -public: - Loader(ScriptEngine *engine, Logger logger); - - void setProgressObserver(ProgressObserver *observer); - void setOldProjectProbes(const std::vector &oldProbes); - void setOldProductProbes(const QHash> &oldProbes); - void setLastResolveTime(const FileTime &time) { m_lastResolveTime = time; } - void setStoredProfiles(const QVariantMap &profiles); - void setStoredModuleProviderInfo(const StoredModuleProviderInfo &providerInfo); - TopLevelProjectPtr loadProject(const SetupProjectParameters ¶meters); - -private: - Logger m_logger; - ProgressObserver *m_progressObserver; - ScriptEngine * const m_engine; - std::vector m_oldProjectProbes; - QHash> m_oldProductProbes; - StoredModuleProviderInfo m_storedModuleProviderInfo; - QVariantMap m_storedProfiles; - FileTime m_lastResolveTime; -}; - -} // namespace Internal -} // namespace qbs - -#endif // QBS_LOADER_H diff --git a/src/lib/corelib/loader/projectresolver.cpp b/src/lib/corelib/loader/projectresolver.cpp index a7eb562c3..994436b61 100644 --- a/src/lib/corelib/loader/projectresolver.cpp +++ b/src/lib/corelib/loader/projectresolver.cpp @@ -56,18 +56,19 @@ #include #include #include -#include #include #include #include #include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -127,11 +128,7 @@ class CancelException { }; class ProjectResolver::Private { public: - Private(const SetupProjectParameters &setupParameters, - ScriptEngine *engine, Logger &logger) - : setupParams(setupParameters), engine(engine), evaluator(engine), - logger(logger) - {} + Private(ScriptEngine *engine, Logger &&logger) : engine(engine), logger(std::move(logger)) {} static void applyFileTaggers(const SourceArtifactPtr &artifact, const ResolvedProductConstPtr &product); @@ -139,6 +136,7 @@ public: const ResolvedProductPtr &rproduct, const QString &fileName, const GroupPtr &group, bool wildcard, const CodeLocation &filesLocation = CodeLocation(), FileLocations *fileLocations = nullptr, ErrorInfo *errorInfo = nullptr); + void finalizeProjectParameters(); void checkCancelation() const; QString verbatimValue(const ValueConstPtr &value, bool *propertyWasSet = nullptr) const; QString verbatimValue(Item *item, const QString &name, bool *propertyWasSet = nullptr) const; @@ -222,12 +220,12 @@ public: using ItemFuncMap = QMap; void callItemFunction(const ItemFuncMap &mappings, Item *item, ProjectContext *projectContext); - const SetupProjectParameters &setupParams; - ProjectTreeBuilder::Result loadResult; ScriptEngine * const engine; - Evaluator evaluator; - Logger &logger; + mutable Logger logger; + Evaluator evaluator{engine}; ItemPool itemPool; + SetupProjectParameters setupParams; + ProjectTreeBuilder::Result loadResult; ProgressObserver *progressObserver = nullptr; ProductContext *productContext = nullptr; ModuleContext *moduleContext = nullptr; @@ -252,11 +250,10 @@ public: }; -ProjectResolver::ProjectResolver(const SetupProjectParameters &setupParameters, - ScriptEngine *engine, Logger &logger) - : d(new Private(setupParameters, engine, logger)) +ProjectResolver::ProjectResolver(ScriptEngine *engine, Logger logger) + : d(new Private(engine, std::move(logger))) { - QBS_CHECK(FileInfo::isAbsolute(d->setupParams.buildRoot())); + d->logger.storeWarnings(); } ProjectResolver::~ProjectResolver() @@ -314,12 +311,36 @@ static void checkForDuplicateProductNames(const TopLevelProjectConstPtr &project } } -TopLevelProjectPtr ProjectResolver::resolve() +TopLevelProjectPtr ProjectResolver::resolve(const SetupProjectParameters ¶meters) { + d->setupParams = parameters; + d->finalizeProjectParameters(); + QBS_CHECK(FileInfo::isAbsolute(d->setupParams.buildRoot())); + TimedActivityLogger projectResolverTimer(d->logger, Tr::tr("ProjectResolver"), d->setupParams.logElapsedTime()); qCDebug(lcProjectResolver) << "resolving" << d->setupParams.projectFilePath(); + d->engine->setEnvironment(d->setupParams.adjustedEnvironment()); + d->engine->checkAndClearException({}); + d->engine->clearImportsCache(); + d->engine->clearRequestedProperties(); + d->engine->enableProfiling(d->setupParams.logElapsedTime()); + d->logger.clearWarnings(); + EvalContextSwitcher evalContextSwitcher(d->engine, EvalContext::PropertyEvaluation); + + // At this point, we cannot set a sensible total effort, because we know nothing about + // the project yet. That's why we use a placeholder here, so the user at least + // sees that an operation is starting. The real total effort will be set later when + // we have enough information. + if (d->progressObserver) { + d->progressObserver->initialize(Tr::tr("Resolving project for configuration %1") + .arg(TopLevelProject::deriveId(d->setupParams.finalBuildConfigurationTree())), 1); + d->progressObserver->setScriptEngine(d->engine); + } + + const FileTime resolveTime = FileTime::currentTime(); + TopLevelProjectPtr tlp; ProjectTreeBuilder projectTreeBuilder(d->setupParams, d->itemPool, d->evaluator, d->logger); projectTreeBuilder.setProgressObserver(d->progressObserver); projectTreeBuilder.setOldProjectProbes(d->oldProjectProbes); @@ -328,8 +349,6 @@ TopLevelProjectPtr ProjectResolver::resolve() projectTreeBuilder.setStoredProfiles(d->storedProfiles); projectTreeBuilder.setStoredModuleProviderInfo(d->storedModuleProviderInfo); d->loadResult = projectTreeBuilder.load(); - - TopLevelProjectPtr tlp; try { tlp = d->resolveTopLevelProject(); d->printProfilingInfo(); @@ -338,6 +357,12 @@ TopLevelProjectPtr ProjectResolver::resolve() .arg(TopLevelProject::deriveId( d->setupParams.finalBuildConfigurationTree()))); } + tlp->lastStartResolveTime = resolveTime; + tlp->lastEndResolveTime = FileTime::currentTime(); + + // E.g. if the top-level project is disabled. + if (d->progressObserver) + d->progressObserver->setFinished(); return tlp; } @@ -807,6 +832,23 @@ SourceArtifactPtr ProjectResolver::Private::createSourceArtifact( return artifact; } +void ProjectResolver::Private::finalizeProjectParameters() +{ + if (setupParams.topLevelProfile().isEmpty()) { + Settings settings(setupParams.settingsDirectory()); + QString profileName = settings.defaultProfile(); + if (profileName.isEmpty()) { + logger.qbsDebug() << Tr::tr("No profile specified and no default profile exists. " + "Using default property values."); + profileName = Profile::fallbackName(); + } + setupParams.setTopLevelProfile(profileName); + setupParams.expandBuildConfiguration(); + } + setupParams.finalizeProjectFilePath(); + QBS_CHECK(QFileInfo(setupParams.projectFilePath()).isAbsolute()); +} + static QualifiedIdSet propertiesToEvaluate(std::deque initialProps, const PropertyDependencies &deps) { diff --git a/src/lib/corelib/loader/projectresolver.h b/src/lib/corelib/loader/projectresolver.h index eaa88fd63..94a88c614 100644 --- a/src/lib/corelib/loader/projectresolver.h +++ b/src/lib/corelib/loader/projectresolver.h @@ -41,6 +41,8 @@ #define PROJECTRESOLVER_H #include +#include +#include #include #include @@ -56,11 +58,10 @@ class ProgressObserver; class ScriptEngine; class StoredModuleProviderInfo; -class ProjectResolver +class QBS_AUTOTEST_EXPORT ProjectResolver { public: - ProjectResolver(const SetupProjectParameters &setupParameters, - ScriptEngine *engine, Logger &logger); + ProjectResolver(ScriptEngine *engine, Logger logger); ~ProjectResolver(); void setProgressObserver(ProgressObserver *observer); @@ -69,7 +70,7 @@ public: void setLastResolveTime(const FileTime &time); void setStoredProfiles(const QVariantMap &profiles); void setStoredModuleProviderInfo(const StoredModuleProviderInfo &providerInfo); - TopLevelProjectPtr resolve(); + TopLevelProjectPtr resolve(const SetupProjectParameters ¶meters); private: class Private; diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp index c81017f26..eda7bf566 100644 --- a/tests/auto/language/tst_language.cpp +++ b/tests/auto/language/tst_language.cpp @@ -143,7 +143,7 @@ void TestLanguage::handleInitCleanupDataTags(const char *projectFileName, bool * bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject(projectFileName)); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); } catch (const ErrorInfo &e) { exceptionCaught = true; @@ -160,10 +160,16 @@ void TestLanguage::handleInitCleanupDataTags(const char *projectFileName, bool * void TestLanguage::init() { + m_resolver = new ProjectResolver(m_engine.get(), m_logger); m_logSink->setLogLevel(LoggerInfo); QVERIFY(m_tempDir.isValid()); } +void TestLanguage::cleanup() +{ + delete m_resolver; +} + #define HANDLE_INIT_CLEANUP_DATATAGS(fn) {\ bool handled;\ handleInitCleanupDataTags(fn, &handled);\ @@ -176,7 +182,6 @@ void TestLanguage::initTestCase() { m_logger = Logger(m_logSink); m_engine = ScriptEngine::create(m_logger, EvalContext::PropertyEvaluation); - loader = new Loader(m_engine.get(), m_logger); defaultParameters.setTopLevelProfile(profileName()); defaultParameters.setConfigurationName("default"); defaultParameters.expandBuildConfiguration(); @@ -185,17 +190,12 @@ void TestLanguage::initTestCase() QVERIFY(QFileInfo(m_wildcardsTestDirPath).isAbsolute()); } -void TestLanguage::cleanupTestCase() -{ - delete loader; -} - void TestLanguage::additionalProductTypes() { bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("additional-product-types.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); const ResolvedProductConstPtr product = products.value("p"); @@ -217,7 +217,7 @@ void TestLanguage::baseProperty() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("baseproperty.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); @@ -237,7 +237,7 @@ void TestLanguage::baseValidation() qbs::SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("base-validate/base-validate.qbs")); try { - project = loader->loadProject(params); + project = m_resolver->resolve(params); QVERIFY2(false, "exception expected"); } catch (const qbs::ErrorInfo &e) { QVERIFY2(e.toString().contains("Parent succeeded, child failed."), @@ -251,7 +251,7 @@ void TestLanguage::brokenDependencyCycle() QFETCH(QString, projectFileName); params.setProjectFilePath(testProject(qPrintable(projectFileName))); try { - project = loader->loadProject(params); + project = m_resolver->resolve(params); } catch (const qbs::ErrorInfo &e) { QVERIFY2(false, qPrintable(e.toString())); } @@ -273,7 +273,7 @@ void TestLanguage::buildConfigStringListSyntax() overriddenValues.insert("project.someStrings", "foo,bar,baz"); parameters.setOverriddenValues(overriddenValues); parameters.setProjectFilePath(testProject("buildconfigstringlistsyntax.qbs")); - project = loader->loadProject(parameters); + project = m_resolver->resolve(parameters); QVERIFY(!!project); QCOMPARE(project->projectProperties().value("someStrings").toStringList(), QStringList() << "foo" << "bar" << "baz"); @@ -290,7 +290,7 @@ void TestLanguage::builtinFunctionInSearchPathsProperty() try { SetupProjectParameters parameters = defaultParameters; parameters.setProjectFilePath(testProject("builtinFunctionInSearchPathsProperty.qbs")); - QVERIFY(!!loader->loadProject(parameters)); + QVERIFY(!!m_resolver->resolve(parameters)); } catch (const ErrorInfo &e) { exceptionCaught = true; qDebug() << e.toString(); @@ -304,7 +304,7 @@ void TestLanguage::chainedProbes() try { SetupProjectParameters parameters = defaultParameters; parameters.setProjectFilePath(testProject("chained-probes/chained-probes.qbs")); - const TopLevelProjectConstPtr project = loader->loadProject(parameters); + const TopLevelProjectConstPtr project = m_resolver->resolve(parameters); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(1)); const QString prop1Val = project->products.front()->moduleProperties @@ -327,7 +327,7 @@ void TestLanguage::versionCompare() try { SetupProjectParameters parameters = defaultParameters; parameters.setProjectFilePath(testProject("versionCompare.qbs")); - QVERIFY(!!loader->loadProject(parameters)); + QVERIFY(!!m_resolver->resolve(parameters)); } catch (const ErrorInfo &e) { exceptionCaught = true; qDebug() << e.toString(); @@ -340,7 +340,7 @@ void TestLanguage::canonicalArchitecture() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("canonicalArchitecture.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value(QStringLiteral("x86")); @@ -357,7 +357,7 @@ void TestLanguage::rfc1034Identifier() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("rfc1034identifier.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value(QStringLiteral("this-has-special-characters-" @@ -380,7 +380,7 @@ void TestLanguage::conditionalDepends() params.setProjectFilePath(testProject("conditionaldepends.qbs")); params.setOverriddenValues({std::make_pair(QString("products." "multilevel_module_props_overridden.dummy3.loadDummy"), true)}); - project = loader->loadProject(params); + project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); @@ -489,7 +489,7 @@ void TestLanguage::delayedError() QVariantMap overriddenValues; overriddenValues.insert("project.enableProduct", productEnabled); params.setOverriddenValues(overriddenValues); - project = loader->loadProject(params); + project = m_resolver->resolve(params); QCOMPARE(productEnabled, false); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(1)); @@ -531,7 +531,7 @@ void TestLanguage::dependencyOnAllProfiles() overriddenValues.insert("project.profile1", "p1"); overriddenValues.insert("project.profile2", "p2"); params.setOverriddenValues(overriddenValues); - project = loader->loadProject(params); + project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(3)); const ResolvedProductConstPtr mainProduct = productsFromProject(project).value("main"); @@ -554,7 +554,7 @@ void TestLanguage::derivedSubProject() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("derived-sub-project/project.qbs")); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -571,7 +571,7 @@ void TestLanguage::disabledSubProject() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("disabled-subproject.qbs")); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 0); @@ -609,7 +609,7 @@ void TestLanguage::dottedNames() std::make_pair("projects.theProject.includeDottedModule", useModule) }; params.setOverriddenValues(overridden); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(expectSuccess); QVERIFY(!!project); QHash products = productsFromProject(project); @@ -632,7 +632,7 @@ void TestLanguage::emptyJsFile() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("empty-js-file.qbs")); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -649,7 +649,7 @@ void TestLanguage::enumerateProjectProperties() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("enum-project-props.qbs")); - auto project = loader->loadProject(params); + auto project = m_resolver->resolve(params); QVERIFY(!!project); auto products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -686,7 +686,7 @@ void TestLanguage::evalErrorInNonPresentModule() params.setProjectFilePath(testProject("eval-error-in-non-present-module.qbs")); QVariantMap overridden{std::make_pair("products.p.moduleRequired", moduleRequired)}; params.setOverriddenValues(overridden); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(errorMessage.isEmpty()); QVERIFY(!!project); QHash products = productsFromProject(project); @@ -711,7 +711,7 @@ void TestLanguage::defaultValue() if (!prop1Value.isEmpty()) overridden.insert("modules.lower.prop1", prop1Value); params.setOverriddenValues(overridden); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -762,7 +762,7 @@ void TestLanguage::environmentVariable() defaultParameters.setEnvironment(env); defaultParameters.setProjectFilePath(testProject("environmentvariable.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); defaultParameters.setEnvironment(origEnv); // reset environment @@ -783,7 +783,7 @@ void TestLanguage::errorInDisabledProduct() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("error-in-disabled-product.qbs")); - auto project = loader->loadProject(params); + auto project = m_resolver->resolve(params); QVERIFY(!!project); auto products = productsFromProject(project); QCOMPARE(products.size(), 5); @@ -954,7 +954,7 @@ void TestLanguage::erroneousFiles() QString fileName = QString::fromLocal8Bit(QTest::currentDataTag()) + QLatin1String(".qbs"); try { defaultParameters.setProjectFilePath(testProject("/erroneous/") + fileName); - loader->loadProject(defaultParameters); + m_resolver->resolve(defaultParameters); } catch (const ErrorInfo &e) { const QRegularExpression reg(errorMessage, QRegularExpression::DotMatchesEverythingOption); if (!e.toString().contains(reg)) { @@ -974,7 +974,7 @@ void TestLanguage::exports() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("exports.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 22); @@ -1100,7 +1100,7 @@ void TestLanguage::fileContextProperties() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("filecontextproperties.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); @@ -1153,7 +1153,7 @@ void TestLanguage::fileInProductAndModule() std::make_pair("modules.module_with_file.file2IsTarget", file2IsTarget), std::make_pair("products.p.addFileToProduct", addFileToProduct), }); - project = loader->loadProject(params); + project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -1169,7 +1169,7 @@ void TestLanguage::getNativeSetting() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("getNativeSetting.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QString expectedTargetName; if (HostOsInfo::isMacosHost()) { @@ -1245,7 +1245,7 @@ void TestLanguage::groupName() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("groupname.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -1284,7 +1284,7 @@ void TestLanguage::homeDirectory() { try { defaultParameters.setProjectFilePath(testProject("homeDirectory.qbs")); - ResolvedProjectPtr project = loader->loadProject(defaultParameters); + ResolvedProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -1390,7 +1390,7 @@ void TestLanguage::idUsage() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("idusage.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 5); @@ -1427,7 +1427,7 @@ void TestLanguage::idUniqueness() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("id-uniqueness.qbs")); - loader->loadProject(defaultParameters); + m_resolver->resolve(defaultParameters); } catch (const ErrorInfo &e) { exceptionCaught = true; @@ -1445,7 +1445,7 @@ void TestLanguage::importCollection() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("import-collection/project.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); const ResolvedProductConstPtr product = products.value("da product"); @@ -1477,7 +1477,7 @@ void TestLanguage::inheritedPropertiesItems() params.setProjectFilePath (testProject("inherited-properties-items/inherited-properties-items.qbs")); params.setOverriddenValues(QVariantMap{std::make_pair("qbs.buildVariant", buildVariant)}); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -1495,7 +1495,7 @@ void TestLanguage::invalidBindingInDisabledItem() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("invalidBindingInDisabledItem.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -1517,7 +1517,7 @@ void TestLanguage::invalidOverrides() qbs::SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("invalid-overrides.qbs")); params.setOverriddenValues(QVariantMap{std::make_pair(key, true)}); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); } catch (const ErrorInfo &e) { @@ -1666,7 +1666,7 @@ void TestLanguage::jsImportUsedInMultipleScopes() params.setOverriddenValues({std::make_pair(QStringLiteral("qbs.buildVariant"), buildVariant)}); params.expandBuildConfiguration(); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -1689,7 +1689,7 @@ void TestLanguage::moduleMergingVariantValues() params.setProjectFilePath (testProject("module-merging-variant-values/module-merging-variant-values.qbs")); params.expandBuildConfiguration(); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(int(project->products.size()), 2); } catch (const ErrorInfo &e) { @@ -1719,7 +1719,7 @@ void TestLanguage::modulePrioritizationBySearchPath() params.setOverriddenValues({std::make_pair(QStringLiteral("project.qbsSearchPaths"), searchPaths)}); params.expandBuildConfiguration(); - TopLevelProjectPtr project = loader->loadProject(params); + TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -1795,7 +1795,7 @@ void TestLanguage::modulePropertiesInGroups() defaultParameters.setProjectFilePath(testProject("modulepropertiesingroups.qbs")); bool exceptionCaught = false; try { - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); ResolvedProductPtr product = products.value("grouptest"); @@ -2017,7 +2017,7 @@ void TestLanguage::modulePropertyOverridesPerProduct() }); params.setProjectFilePath( testProject("module-property-overrides-per-product.qbs")); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 3); @@ -2063,7 +2063,7 @@ void TestLanguage::moduleScope() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("modulescope.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -2096,7 +2096,7 @@ void TestLanguage::moduleWithProductDependency() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("module-depends-on-product.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -2168,7 +2168,7 @@ void TestLanguage::multiplexedExports() try { SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("multiplexed-exports.qbs")); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); const auto products = project->allProducts(); QCOMPARE(products.size(), size_t(4)); @@ -2206,7 +2206,7 @@ void TestLanguage::multiplexingByProfile() params.setProjectFilePath(testDataDir() + "/multiplexing-by-profile/" + projectFileName); try { params.setDryRun(true); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(successExpected); QVERIFY(!!project); } catch (const ErrorInfo &e) { @@ -2234,7 +2234,7 @@ void TestLanguage::nonApplicableModulePropertyInProfile() params.setProjectFilePath(testProject("non-applicable-module-property-in-profile.qbs")); params.setOverriddenValues(QVariantMap{std::make_pair("project.targetOS", targetOS), std::make_pair("project.toolchain", toolchain)}); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QVERIFY(successExpected); } catch (const ErrorInfo &e) { @@ -2274,7 +2274,7 @@ void TestLanguage::nonRequiredProducts() else if (!dependeeEnabled) overriddenValues.insert("products.dependee.condition", false); params.setOverriddenValues(overriddenValues); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); const auto products = productsFromProject(project); QCOMPARE(products.size(), 4 + !!subProjectEnabled); @@ -2315,7 +2315,7 @@ void TestLanguage::outerInGroup() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("outerInGroup.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -2353,7 +2353,7 @@ void TestLanguage::overriddenPropertiesAndPrototypes() SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("overridden-properties-and-prototypes.qbs")); params.setOverriddenValues({std::make_pair("modules.qbs.targetPlatform", osName)}); - TopLevelProjectConstPtr project = loader->loadProject(params); + TopLevelProjectConstPtr project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(1)); QCOMPARE(project->products.front()->moduleProperties->moduleProperty( @@ -2382,7 +2382,7 @@ void TestLanguage::overriddenVariantProperty() const QVariantMap objectValue{std::make_pair("x", 1), std::make_pair("y", 2)}; params.setOverriddenValues({std::make_pair("products.p.myObject", objectValue)}); params.setProjectFilePath(testProject("overridden-variant-property.qbs")); - TopLevelProjectConstPtr project = loader->loadProject(params); + TopLevelProjectConstPtr project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(1)); QCOMPARE(project->products.front()->productProperties.value("myObject").toMap(), @@ -2399,7 +2399,7 @@ void TestLanguage::parameterTypes() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("parameter-types.qbs")); - loader->loadProject(defaultParameters); + m_resolver->resolve(defaultParameters); } catch (const ErrorInfo &e) { exceptionCaught = true; @@ -2413,7 +2413,7 @@ void TestLanguage::pathProperties() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("pathproperties.qbs")); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); @@ -2456,7 +2456,7 @@ void TestLanguage::profileValuesAndOverriddenValues() parameters.setOverriddenValues(overriddenValues); parameters.setProjectFilePath(testProject("profilevaluesandoverriddenvalues.qbs")); parameters.expandBuildConfiguration(); - project = loader->loadProject(parameters); + project = m_resolver->resolve(parameters); QVERIFY(!!project); QHash products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); @@ -2518,7 +2518,7 @@ void TestLanguage::productConditions() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("productconditions.qbs")); - TopLevelProjectPtr project = loader->loadProject(defaultParameters); + TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 6); @@ -2559,7 +2559,7 @@ void TestLanguage::productDirectories() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("productdirectories.qbs")); - ResolvedProjectPtr project = loader->loadProject(defaultParameters); + ResolvedProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QHash products = productsFromProject(project); QCOMPARE(products.size(), 1); @@ -2718,7 +2718,7 @@ void TestLanguage::propertiesBlockInGroup() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("properties-block-in-group.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); QCOMPARE(project->allProducts().size(), size_t(1)); const ResolvedProductConstPtr product = project->allProducts().front(); @@ -2744,7 +2744,7 @@ void TestLanguage::propertiesItemInModule() try { defaultParameters.setProjectFilePath( testProject("properties-item-in-module.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -2765,7 +2765,7 @@ void TestLanguage::propertyAssignmentInExportedGroup() try { defaultParameters.setProjectFilePath( testProject("property-assignment-in-exported-group.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 2); @@ -2793,7 +2793,7 @@ void TestLanguage::qbs1275() bool exceptionCaught = false; try { defaultParameters.setProjectFilePath(testProject("qbs1275.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.count(), 5); @@ -2810,7 +2810,7 @@ void TestLanguage::qbsPropertiesInProjectCondition() try { defaultParameters.setProjectFilePath( testProject("qbs-properties-in-project-condition.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 0); @@ -2828,7 +2828,7 @@ void TestLanguage::qbsPropertyConvenienceOverride() SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("qbs-property-convenience-override.qbs")); params.setOverriddenValues({std::make_pair("qbs.installPrefix", "/opt")}); - TopLevelProjectConstPtr project = loader->loadProject(params); + TopLevelProjectConstPtr project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(project->products.size(), size_t(1)); QCOMPARE(project->products.front()->moduleProperties->qbsPropertyValue("installPrefix") @@ -2849,7 +2849,7 @@ void TestLanguage::relaxedErrorMode() params.setProjectFilePath(testProject("relaxed-error-mode/relaxed-error-mode.qbs")); params.setProductErrorMode(strictMode ? ErrorHandlingMode::Strict : ErrorHandlingMode::Relaxed); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!strictMode); const auto productMap = productsFromProject(project); const ResolvedProductConstPtr brokenProduct = productMap.value("broken"); @@ -2897,7 +2897,7 @@ void TestLanguage::requiredAndNonRequiredDependencies() SetupProjectParameters params = defaultParameters; const QString projectFilePath = "required-and-nonrequired-dependencies/" + projectFile; params.setProjectFilePath(testProject(projectFilePath.toLocal8Bit())); - const TopLevelProjectConstPtr project = loader->loadProject(params); + const TopLevelProjectConstPtr project = m_resolver->resolve(params); QVERIFY(!!project); QVERIFY(!exceptionExpected); } catch (const ErrorInfo &e) { @@ -2927,7 +2927,7 @@ void TestLanguage::suppressedAndNonSuppressedErrors() SetupProjectParameters params = defaultParameters; const QString projectFilePath = "suppressed-and-non-suppressed-errors.qbs"; params.setProjectFilePath(testProject(projectFilePath.toLocal8Bit())); - const TopLevelProjectConstPtr project = loader->loadProject(params); + const TopLevelProjectConstPtr project = m_resolver->resolve(params); QFAIL("failure expected"); } catch (const ErrorInfo &e) { QVERIFY2(e.toString().contains("easter bunny"), qPrintable(e.toString())); @@ -2944,7 +2944,7 @@ void TestLanguage::throwingProbe() QVariantMap properties; properties.insert(QStringLiteral("products.theProduct.enableProbe"), enableProbe); params.setOverriddenValues(properties); - const TopLevelProjectPtr project = loader->loadProject(params); + const TopLevelProjectPtr project = m_resolver->resolve(params); QVERIFY(!!project); QVERIFY(!enableProbe); } catch (const ErrorInfo &e) { @@ -2988,7 +2988,7 @@ void TestLanguage::recursiveProductDependencies() try { defaultParameters.setProjectFilePath( testProject("recursive-dependencies/recursive-dependencies.qbs")); - const TopLevelProjectPtr project = loader->loadProject(defaultParameters); + const TopLevelProjectPtr project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); QCOMPARE(products.size(), 4); @@ -3051,7 +3051,7 @@ void TestLanguage::useInternalProfile() SetupProjectParameters params = defaultParameters; params.setProjectFilePath(testProject("use-internal-profile.qbs")); params.setTopLevelProfile(profile); - TopLevelProjectConstPtr project = loader->loadProject(params); + TopLevelProjectConstPtr project = m_resolver->resolve(params); QVERIFY(!!project); QCOMPARE(project->profile(), profile); QCOMPARE(project->products.size(), size_t(1)); @@ -3261,7 +3261,7 @@ void TestLanguage::wildcards() ResolvedProductPtr product; try { defaultParameters.setProjectFilePath(projectFilePath); - project = loader->loadProject(defaultParameters); + project = m_resolver->resolve(defaultParameters); QVERIFY(!!project); const QHash products = productsFromProject(project); product = products.value("MyProduct"); diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h index f1be40c88..0a59c48b1 100644 --- a/tests/auto/language/tst_language.h +++ b/tests/auto/language/tst_language.h @@ -41,7 +41,7 @@ #define TST_LANGUAGE_H #include -#include +#include #include #include @@ -61,7 +61,7 @@ private: qbs::Settings * const m_settings; qbs::Internal::Logger m_logger; std::unique_ptr m_engine; - qbs::Internal::Loader *loader; + qbs::Internal::ProjectResolver *m_resolver; qbs::Internal::TopLevelProjectPtr project; qbs::SetupProjectParameters defaultParameters; const QString m_wildcardsTestDirPath; @@ -75,8 +75,8 @@ private: private slots: void init(); + void cleanup(); void initTestCase(); - void cleanupTestCase(); void additionalProductTypes(); void baseProperty(); -- cgit v1.2.1