summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-06-08 17:41:24 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-06-08 15:47:35 +0000
commit3d418b5811fa813036bf44b9a5d96e82772d1ecb (patch)
treeefafc32e0fc9a0447bb58913a2b5bdc14a14e0b0
parent3a2d1dbf58e291bc22d9b0e997bb0b9bfb13ae72 (diff)
downloadqbs-3d418b5811fa813036bf44b9a5d96e82772d1ecb.tar.gz
Warn against non-prefixed command-line property overrides
We changed the syntax for 1.8, but users did not get any hint about that when using the old one. Change-Id: I953de0422426d19513f3306417fb26577038919b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/language/moduleloader.cpp39
-rw-r--r--tests/auto/blackbox/testdata/missing-override-prefix/missing-override-prefix.qbs3
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp11
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
4 files changed, 46 insertions, 8 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index fa3dabfb5..a8a3c5492 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -76,6 +76,14 @@
namespace qbs {
namespace Internal {
+static void handlePropertyError(const ErrorInfo &error, const SetupProjectParameters &params,
+ Logger &logger)
+{
+ if (params.propertyCheckingMode() == ErrorHandlingMode::Strict)
+ throw error;
+ logger.printWarning(error);
+}
+
class ModuleLoader::ItemModuleList : public QList<Item::Module> {};
const QString moduleSearchSubDir = QLatin1String("modules");
@@ -273,6 +281,29 @@ ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters &parameters)
m_reader->setEnableTiming(parameters.logElapsedTime());
m_elapsedTimeProbes = 0;
+ for (const QString &key : m_parameters.overriddenValues().keys()) {
+ static const QStringList prefixes({ QLatin1String("project"), QLatin1String("projects"),
+ QLatin1String("products"), QLatin1String("modules"),
+ QLatin1String("qbs")});
+ bool ok = false;
+ for (const auto &prefix : prefixes) {
+ if (key.startsWith(prefix + QLatin1Char('.'))) {
+ ok = true;
+ break;
+ }
+ }
+ if (ok)
+ continue;
+ ErrorInfo e(Tr::tr("Property override key '%1' not understood.").arg(key));
+ e.append(Tr::tr("Please use one of the following:"));
+ e.append(QLatin1Char('\t') + Tr::tr("projects.<project-name>.<property-name>:value"));
+ e.append(QLatin1Char('\t') + Tr::tr("products.<product-name>.<property-name>:value"));
+ e.append(QLatin1Char('\t') + Tr::tr("modules.<module-name>.<property-name>:value"));
+ e.append(QLatin1Char('\t') + Tr::tr("products.<product-name>.<module-name>."
+ "<property-name>:value"));
+ handlePropertyError(e, m_parameters, m_logger);
+ }
+
ModuleLoaderResult result;
m_pool = result.itemPool.data();
m_reader->setPool(m_pool);
@@ -314,14 +345,6 @@ ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters &parameters)
return result;
}
-static void handlePropertyError(const ErrorInfo &error, const SetupProjectParameters &params,
- Logger &logger)
-{
- if (params.propertyCheckingMode() == ErrorHandlingMode::Strict)
- throw error;
- logger.printWarning(error);
-}
-
class PropertyDeclarationCheck : public ValueHandler
{
const Set<Item *> &m_disabledItems;
diff --git a/tests/auto/blackbox/testdata/missing-override-prefix/missing-override-prefix.qbs b/tests/auto/blackbox/testdata/missing-override-prefix/missing-override-prefix.qbs
new file mode 100644
index 000000000..6d16a3c53
--- /dev/null
+++ b/tests/auto/blackbox/testdata/missing-override-prefix/missing-override-prefix.qbs
@@ -0,0 +1,3 @@
+import qbs
+
+Product { }
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 9a0b89a80..5115c7ddb 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -4719,6 +4719,17 @@ void TestBlackbox::missingDependency()
QVERIFY(m_qbsStderr.contains("false positive"));
}
+void TestBlackbox::missingOverridePrefix()
+{
+ QDir::setCurrent(testDataDir + "/missing-override-prefix");
+ QbsRunParameters params;
+ params.expectFailure = true;
+ params.arguments << "blubb.whatever:false";
+ QCOMPARE(runQbs(params), 0);
+ QVERIFY2(m_qbsStderr.contains("Property override key 'blubb.whatever' not understood"),
+ m_qbsStderr.constData());
+}
+
void TestBlackbox::badInterpreter()
{
if (!HostOsInfo::isAnyUnixHost())
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index c73855696..bb6426daa 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -125,6 +125,7 @@ private slots:
void loadableModule();
void lrelease();
void missingDependency();
+ void missingOverridePrefix();
void mixedBuildVariants();
void mocFlags();
void multipleChanges();