From 1d732c3d2064916abbeeff54efe262a5c58a7753 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 7 Jan 2019 14:52:14 +0100 Subject: SetupProjectParameters: Remove invalid assertion It prevented users from overriding variant properties. Change-Id: I37c3e0a127048d7a6c6d396b20b424003ac25903 Reviewed-by: Joerg Bornemann --- src/lib/corelib/tools/setupprojectparameters.cpp | 5 ----- .../testdata/overridden-variant-property.qbs | 4 ++++ tests/auto/language/tst_language.cpp | 20 ++++++++++++++++++++ tests/auto/language/tst_language.h | 1 + 4 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 tests/auto/language/testdata/overridden-variant-property.qbs 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(); -- cgit v1.2.3