aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-01-07 14:52:14 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-01-07 15:39:44 +0000
commit1d732c3d2064916abbeeff54efe262a5c58a7753 (patch)
treed572a4e147edb985982a786532fc5a55bb9eb439
parentd8a5edfb8c5bb0556d33d8eac512be41472585fb (diff)
SetupProjectParameters: Remove invalid assertion
It prevented users from overriding variant properties. Change-Id: I37c3e0a127048d7a6c6d396b20b424003ac25903 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/tools/setupprojectparameters.cpp5
-rw-r--r--tests/auto/language/testdata/overridden-variant-property.qbs4
-rw-r--r--tests/auto/language/tst_language.cpp20
-rw-r--r--tests/auto/language/tst_language.h1
4 files changed, 25 insertions, 5 deletions
diff --git a/src/lib/corelib/tools/setupprojectparameters.cpp b/src/lib/corelib/tools/setupprojectparameters.cpp
index 91bf311da..39304d4c9 100644
--- a/src/lib/corelib/tools/setupprojectparameters.cpp
+++ b/src/lib/corelib/tools/setupprojectparameters.cpp
@@ -295,11 +295,6 @@ QVariantMap SetupProjectParameters::overriddenValues() const
*/
void SetupProjectParameters::setOverriddenValues(const QVariantMap &values)
{
- // warn if somebody tries to set a build configuration tree:
- for (QVariantMap::const_iterator i = values.constBegin();
- i != values.constEnd(); ++i) {
- QBS_ASSERT(i.value().type() != QVariant::Map, return);
- }
d->overriddenValues = values;
d->overriddenValuesTree.clear();
d->finalBuildConfigTree.clear();
diff --git a/tests/auto/language/testdata/overridden-variant-property.qbs b/tests/auto/language/testdata/overridden-variant-property.qbs
new file mode 100644
index 000000000..09636d330
--- /dev/null
+++ b/tests/auto/language/testdata/overridden-variant-property.qbs
@@ -0,0 +1,4 @@
+Product {
+ name: "p"
+ property var myObject
+}
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index 2bd5b5de8..be9dfb932 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -2342,6 +2342,26 @@ void TestLanguage::overriddenPropertiesAndPrototypes_data()
QTest::newRow("second backend") << "os2" << "backend 2";
}
+void TestLanguage::overriddenVariantProperty()
+{
+ bool exceptionCaught = false;
+ try {
+ SetupProjectParameters params = defaultParameters;
+ 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);
+ QVERIFY(!!project);
+ QCOMPARE(project->products.size(), size_t(1));
+ QCOMPARE(project->products.front()->productProperties.value("myObject").toMap(),
+ objectValue);
+ } catch (const ErrorInfo &e) {
+ exceptionCaught = true;
+ qDebug() << e.toString();
+ }
+ QCOMPARE(exceptionCaught, false);
+}
+
void TestLanguage::parameterTypes()
{
bool exceptionCaught = false;
diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h
index b2d242bfb..0fa44afe4 100644
--- a/tests/auto/language/tst_language.h
+++ b/tests/auto/language/tst_language.h
@@ -147,6 +147,7 @@ private slots:
void outerInGroup();
void overriddenPropertiesAndPrototypes();
void overriddenPropertiesAndPrototypes_data();
+ void overriddenVariantProperty();
void parameterTypes();
void pathProperties();
void productConditions();