diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-05-23 14:41:27 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-05-23 18:29:12 +0200 |
commit | 0212823326dde0db2b7a6022a2ee3b6d718b1fdb (patch) | |
tree | e87be63efdc4393653b7d10c30c61b7d84dc70ff | |
parent | ff642cf9b4b4fe24ac904692fd3a227a8bd29c51 (diff) |
fix overriding of project properties
The overriding of project properties happened too late for
project.references. Now it has been moved from ProjectResolver to
ModuleLoader.
Task-number: QBS-281
Change-Id: I69845abc876bda033eb52d3b8313f82ded0abebb
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r-- | src/lib/language/moduleloader.cpp | 13 | ||||
-rw-r--r-- | src/lib/language/moduleloader.h | 2 | ||||
-rw-r--r-- | src/lib/language/projectresolver.cpp | 14 | ||||
-rw-r--r-- | src/lib/language/projectresolver.h | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 3 |
5 files changed, 17 insertions, 16 deletions
diff --git a/src/lib/language/moduleloader.cpp b/src/lib/language/moduleloader.cpp index c9dbc99e2..4745d4284 100644 --- a/src/lib/language/moduleloader.cpp +++ b/src/lib/language/moduleloader.cpp @@ -131,6 +131,7 @@ void ModuleLoader::handleProject(ModuleLoaderResult *loadResult, Item *item) ProductContext dummyProductContext; dummyProductContext.project = &projectContext; loadBaseModule(&dummyProductContext, item); + overrideItemProperties(item, QLatin1String("project"), m_userProperties); foreach (Item *child, item->children()) { child->setScope(projectContext.scope); @@ -803,5 +804,17 @@ QString ModuleLoader::fullModuleName(const QStringList &moduleName) #endif } +void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfigKey, + const QVariantMap &buildConfig) +{ + const QVariant buildConfigValue = buildConfig.value(buildConfigKey); + if (buildConfigValue.isNull()) + return; + const QVariantMap overridden = buildConfigValue.toMap(); + for (QVariantMap::const_iterator it = overridden.constBegin(); it != overridden.constEnd(); + ++it) + item->setProperty(it.key(), VariantValue::create(it.value())); +} + } // namespace Internal } // namespace qbs diff --git a/src/lib/language/moduleloader.h b/src/lib/language/moduleloader.h index 4dd9c100e..d0b2371bb 100644 --- a/src/lib/language/moduleloader.h +++ b/src/lib/language/moduleloader.h @@ -101,6 +101,8 @@ public: bool wrapWithProjectItem = false); static QString fullModuleName(const QStringList &moduleName); + static void overrideItemProperties(Item *item, const QString &buildConfigKey, + const QVariantMap &buildConfig); private: class ContextBase diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp index d7e88e95f..e1cdafd3d 100644 --- a/src/lib/language/projectresolver.cpp +++ b/src/lib/language/projectresolver.cpp @@ -173,7 +173,6 @@ void ProjectResolver::ignoreItem(Item *item) void ProjectResolver::resolveProject(Item *item) { checkCancelation(); - overrideItemProperties(item, QLatin1String("project")); ResolvedProjectPtr project = ResolvedProject::create(); m_projectContext->project = project; @@ -236,7 +235,7 @@ void ProjectResolver::resolveProduct(Item *item) item->setProperty("name", VariantValue::create(product->name)); } m_logger.qbsTrace() << "[PR] resolveProduct " << product->name; - overrideItemProperties(item, product->name); + ModuleLoader::overrideItemProperties(item, product->name, m_buildConfiguration); m_projectContext->productsByName.insert(product->name, product); product->enabled = boolValue(item, QLatin1String("condition"), true); product->additionalFileTags = fileTagsValue(item, QLatin1String("additionalFileTags")); @@ -726,17 +725,6 @@ void ProjectResolver::applyFileTaggers(const SourceArtifactPtr &artifact, } } -void ProjectResolver::overrideItemProperties(Item *item, const QString &buildConfigKey) -{ - const QVariant buildConfigValue = m_buildConfiguration.value(buildConfigKey); - if (buildConfigValue.isNull()) - return; - const QVariantMap overridden = buildConfigValue.toMap(); - for (QVariantMap::const_iterator it = overridden.constBegin(); it != overridden.constEnd(); - ++it) - item->setProperty(it.key(), VariantValue::create(it.value())); -} - QVariantMap ProjectResolver::evaluateModuleValues(Item *item) const { QVariantMap modules; diff --git a/src/lib/language/projectresolver.h b/src/lib/language/projectresolver.h index b4da3eab2..890a47bc6 100644 --- a/src/lib/language/projectresolver.h +++ b/src/lib/language/projectresolver.h @@ -107,7 +107,6 @@ private: void applyFileTaggers(const ResolvedProductPtr &product) const; void applyFileTaggers(const SourceArtifactPtr &artifact, const ResolvedProductConstPtr &product) const; - void overrideItemProperties(Item *item, const QString &buildConfigKey); QVariantMap evaluateModuleValues(Item *item) const; void evaluateModuleValues(Item *item, QVariantMap *modulesMap) const; QVariantMap evaluateProperties(Item *item) const; diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index e12649bf3..f137c5a3a 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -781,11 +781,10 @@ void TestBlackbox::overrideProjectProperties() QVERIFY(runQbs(params) != 0); rmDirR(buildDir); - QEXPECT_FAIL("", "QBS-281", Abort); params.arguments = QStringList() << QLatin1String("-f") << QLatin1String("project_using_helper_lib.qbs") << QLatin1String("project.linkSuccessfully:true"); - params.expectFailure = true; // Change to false when failure is no longer expected. + params.expectFailure = false; QCOMPARE(runQbs(params), 0); } |