aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-07-28 11:41:26 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-07-31 07:51:38 +0000
commit548790931ccac858d9244e4c5546ef1664b0dc4a (patch)
tree7d07f5d2b7e7bdc5b1db6400880adf19a29d3b61
parent149980a682edd4874968749565b690e0431e9115 (diff)
Revert change to module merger that broke overriding list properties
... from the command line. The original change was part of 41595d0cf8, but it is not clear anymore exactly which problem it was supposed to solve. It may well be that it only worked around a temporary problem that no longer existed when the patch was merged. Task-number: QBS-1152 Change-Id: I7e89cf4bf64ef5c8dae5e598154403d4909969c0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/language/modulemerger.cpp5
-rw-r--r--tests/auto/language/testdata/module-property-overrides-per-product.qbs3
-rw-r--r--tests/auto/language/tst_language.cpp26
3 files changed, 25 insertions, 9 deletions
diff --git a/src/lib/corelib/language/modulemerger.cpp b/src/lib/corelib/language/modulemerger.cpp
index ea79d6562..9dc066bf1 100644
--- a/src/lib/corelib/language/modulemerger.cpp
+++ b/src/lib/corelib/language/modulemerger.cpp
@@ -223,11 +223,8 @@ void ModuleMerger::insertProperties(Item::PropertyMap *dst, Item *srcItem, Prope
for (Item::PropertyMap::const_iterator it = srcItem->properties().constBegin();
it != srcItem->properties().constEnd(); ++it) {
const ValuePtr &srcVal = it.value();
- if (srcVal->type() == Value::ItemValueType
- || it.key() == QLatin1String("_qbs_sourceDir")) {
+ if (srcVal->type() != Value::JSSourceValueType)
continue;
- }
-
const PropertyDeclaration srcDecl = srcItem->propertyDeclaration(it.key());
if (!srcDecl.isValid() || srcDecl.isScalar() != (type == ScalarProperties))
continue;
diff --git a/tests/auto/language/testdata/module-property-overrides-per-product.qbs b/tests/auto/language/testdata/module-property-overrides-per-product.qbs
index e58f563a0..3ff811080 100644
--- a/tests/auto/language/testdata/module-property-overrides-per-product.qbs
+++ b/tests/auto/language/testdata/module-property-overrides-per-product.qbs
@@ -4,13 +4,16 @@ Project {
Product {
Depends { name: "dummy" }
name: "a"
+ property stringList rpaths: dummy.rpaths
}
Product {
Depends { name: "dummy" }
name: "b"
+ property stringList rpaths: dummy.rpaths
}
Product {
Depends { name: "dummy" }
name: "c"
+ property stringList rpaths: dummy.rpaths
}
}
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index fdcd98da8..380d23669 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -1511,9 +1511,11 @@ void TestLanguage::modulePropertyOverridesPerProduct()
try {
SetupProjectParameters params = defaultParameters;
params.setOverriddenValues({
+ std::make_pair("modules.dummy.rpaths", QStringList({"/usr/lib"})),
std::make_pair("modules.dummy.someString", "m"),
std::make_pair("products.b.dummy.someString", "b"),
- std::make_pair("products.c.dummy.someString", "c")
+ std::make_pair("products.c.dummy.someString", "c"),
+ std::make_pair("products.c.dummy.rpaths", QStringList({"/home", "/tmp"}))
});
params.setProjectFilePath(
testProject("module-property-overrides-per-product.qbs"));
@@ -1528,14 +1530,28 @@ void TestLanguage::modulePropertyOverridesPerProduct()
const ResolvedProductConstPtr c = products.value("c");
QVERIFY(!!c);
- const auto propertyValue = [](const ResolvedProductConstPtr &p) -> QString
+ const auto stringPropertyValue = [](const ResolvedProductConstPtr &p) -> QString
{
return p->moduleProperties->moduleProperty("dummy", "someString").toString();
};
+ const auto listPropertyValue = [](const ResolvedProductConstPtr &p) -> QStringList
+ {
+ return p->moduleProperties->moduleProperty("dummy", "rpaths").toStringList();
+ };
+ const auto productPropertyValue = [](const ResolvedProductConstPtr &p) -> QStringList
+ {
+ return p->productProperties.value("rpaths").toStringList();
+ };
- QCOMPARE(propertyValue(a), QString("m"));
- QCOMPARE(propertyValue(b), QString("b"));
- QCOMPARE(propertyValue(c), QString("c"));
+ QCOMPARE(stringPropertyValue(a), QString("m"));
+ QCOMPARE(stringPropertyValue(b), QString("b"));
+ QCOMPARE(stringPropertyValue(c), QString("c"));
+ QCOMPARE(listPropertyValue(a), QStringList({"/usr/lib"}));
+ QCOMPARE(listPropertyValue(b), QStringList({"/usr/lib"}));
+ QCOMPARE(listPropertyValue(c), QStringList({"/home", "/tmp"}));
+ QCOMPARE(listPropertyValue(a), productPropertyValue(a));
+ QCOMPARE(listPropertyValue(b), productPropertyValue(b));
+ QCOMPARE(listPropertyValue(c), productPropertyValue(c));
}
catch (const ErrorInfo &e) {
exceptionCaught = true;