diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-07-18 15:50:50 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-19 10:45:01 +0200 |
| commit | 928ae698e534efa92270a8e69d3e49bacb491faf (patch) | |
| tree | e43e4bcbb8576751bdf7e2311b64a8a3a34e1a34 | |
| parent | 8a059586cc109f97b2cfc456cb4262009191ce2b (diff) | |
| download | qbs-928ae698e534efa92270a8e69d3e49bacb491faf.tar.gz | |
fix overriding of stringList properties
Task-number: QBS-369
Change-Id: I602551ed740a81279412cc631c5e35f601a46903
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
| -rw-r--r-- | src/lib/language/moduleloader.cpp | 5 | ||||
| -rw-r--r-- | src/lib/language/testdata/buildconfigstringlistsyntax.qbs | 3 | ||||
| -rw-r--r-- | src/lib/language/tst_language.cpp | 20 | ||||
| -rw-r--r-- | src/lib/language/tst_language.h | 1 |
4 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/language/moduleloader.cpp b/src/lib/language/moduleloader.cpp index a2541717c..20e611d9b 100644 --- a/src/lib/language/moduleloader.cpp +++ b/src/lib/language/moduleloader.cpp @@ -690,6 +690,11 @@ static QVariant convertToPropertyType(const QVariant &v, PropertyDeclaration::Ty const QVariant::Type vt = variantType(t); if (vt == QVariant::Invalid) return v; + + // Handle the foo,bar,bla stringlist syntax. + if (t == PropertyDeclaration::StringList && v.type() == QVariant::String) + return v.toString().split(QLatin1Char(',')); + QVariant c = v; if (!c.convert(vt)) { QStringList name = namePrefix; diff --git a/src/lib/language/testdata/buildconfigstringlistsyntax.qbs b/src/lib/language/testdata/buildconfigstringlistsyntax.qbs new file mode 100644 index 000000000..623919317 --- /dev/null +++ b/src/lib/language/testdata/buildconfigstringlistsyntax.qbs @@ -0,0 +1,3 @@ +Project { + property stringList someStrings +} diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp index 15d426eec..5d75ac339 100644 --- a/src/lib/language/tst_language.cpp +++ b/src/lib/language/tst_language.cpp @@ -169,6 +169,26 @@ void TestLanguage::baseProperty() QCOMPARE(exceptionCaught, false); } +void TestLanguage::buildConfigStringListSyntax() +{ + bool exceptionCaught = false; + try { + SetupProjectParameters parameters = defaultParameters; + QVariantMap overriddenValues; + overriddenValues.insert("project.someStrings", "foo,bar,baz"); + parameters.setOverriddenValues(overriddenValues); + parameters.setProjectFilePath(testProject("buildconfigstringlistsyntax.qbs")); + project = loader->loadProject(parameters); + QVERIFY(project); + QCOMPARE(project->projectProperties().value("someStrings").toStringList(), + QStringList() << "foo" << "bar" << "baz"); + } catch (const ErrorInfo &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); +} + void TestLanguage::conditionalDepends() { bool exceptionCaught = false; diff --git a/src/lib/language/tst_language.h b/src/lib/language/tst_language.h index 67193308b..0f1fffe06 100644 --- a/src/lib/language/tst_language.h +++ b/src/lib/language/tst_language.h @@ -67,6 +67,7 @@ private slots: void cleanupTestCase(); void baseProperty(); + void buildConfigStringListSyntax(); void conditionalDepends(); void environmentVariable(); void erroneousFiles_data(); |
