aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-10-30 10:00:19 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-10-30 15:56:26 +0100
commit1cd77e0f21883d3886e05f3ca15f43f862327cb9 (patch)
tree882a927faa04053e62d16e176fda018e2b2fbdf0
parent7960eb7045bb2df04d7bbad42e46c3f559f976cd (diff)
check property declarations of overridden properties
Now it's an error to pass nonsense like project.blubb:1 on the command line. Task-number: QBS-431 Change-Id: I1e2128bce953b7acef4abe0fd09808ba1f71d1f9 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/moduleloader.cpp4
-rw-r--r--tests/auto/api/tst_api.cpp1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/language/moduleloader.cpp b/src/lib/language/moduleloader.cpp
index 40ce8a95f..9c97271b6 100644
--- a/src/lib/language/moduleloader.cpp
+++ b/src/lib/language/moduleloader.cpp
@@ -1096,6 +1096,10 @@ void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfig
for (QVariantMap::const_iterator it = overridden.constBegin(); it != overridden.constEnd();
++it) {
const PropertyDeclaration decl = item->propertyDeclarations().value(it.key());
+ if (!decl.isValid()) {
+ throw ErrorInfo(
+ Tr::tr("Unknown property: %1.%2").arg(buildConfigKey, it.key()));
+ }
item->setProperty(it.key(),
VariantValue::create(convertToPropertyType(it.value(), decl.type,
QStringList(buildConfigKey), it.key())));
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 6cd7d608c..a60d4795e 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -201,7 +201,6 @@ void TestApi::nonexistingProjectPropertyFromCommandLine()
QScopedPointer<qbs::SetupProjectJob> job(qbs::Project::setupProject(setupParams,
m_logSink, 0));
waitForFinished(job.data());
- QEXPECT_FAIL("", "QBS-431", Abort);
QVERIFY(job->error().hasError());
QVERIFY2(job->error().toString().contains(QLatin1String("blubb")),
qPrintable(job->error().toString()));