diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-01-07 14:52:14 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-01-07 15:39:44 +0000 |
commit | 1d732c3d2064916abbeeff54efe262a5c58a7753 (patch) | |
tree | d572a4e147edb985982a786532fc5a55bb9eb439 | |
parent | d8a5edfb8c5bb0556d33d8eac512be41472585fb (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.cpp | 5 | ||||
-rw-r--r-- | tests/auto/language/testdata/overridden-variant-property.qbs | 4 | ||||
-rw-r--r-- | tests/auto/language/tst_language.cpp | 20 | ||||
-rw-r--r-- | tests/auto/language/tst_language.h | 1 |
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(); |