summaryrefslogtreecommitdiff
path: root/tests/auto/language/tst_language.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-06-20 15:43:59 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-06-25 09:15:34 +0000
commitfbbd436bf1aea9522456f0a99196fa724b7c951c (patch)
tree08dc269cd8fefef60051dc837da4ff3483e608c4 /tests/auto/language/tst_language.cpp
parent10c7da071f1dcf2f3fcc7b1c970b3cff7f376a65 (diff)
downloadqbs-fbbd436bf1aea9522456f0a99196fa724b7c951c.tar.gz
Properly diagnose invalid module property assignments
... if the non-existing module name has more than one component. We inadvertantly skipped the check in that case. Task-number: QBS-1362 Change-Id: I1fcababee1ea70c3133bd1b1c8f8f32f8450a0e8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests/auto/language/tst_language.cpp')
-rw-r--r--tests/auto/language/tst_language.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index 4d24e773b..3c4637018 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -581,6 +581,50 @@ void TestLanguage::disabledSubProject()
QCOMPARE(exceptionCaught, false);
}
+void TestLanguage::dottedNames_data()
+{
+ QTest::addColumn<bool>("useProduct");
+ QTest::addColumn<bool>("useModule");
+ QTest::addColumn<bool>("expectSuccess");
+ QTest::addColumn<QString>("expectedErrorMessage");
+ QTest::newRow("missing product dependency") << false << true << false
+ << QString("Item 'a.b' is not declared. Did you forget to add a Depends item");
+ QTest::newRow("missing module dependency") << true << false << false
+ << QString("Item 'x.y' is not declared. Did you forget to add a Depends item");
+ QTest::newRow("missing both dependencies") << false << false << false << QString();
+ QTest::newRow("ok") << true << true << true << QString();
+}
+
+void TestLanguage::dottedNames()
+{
+ QFETCH(bool, expectSuccess);
+ try {
+ SetupProjectParameters params = defaultParameters;
+ params.setProjectFilePath(testProject("dotted-names/dotted-names.qbs"));
+ QFETCH(bool, useProduct);
+ QFETCH(bool, useModule);
+ const QVariantMap overridden{
+ std::make_pair("projects.theProject.includeDottedProduct", useProduct),
+ std::make_pair("projects.theProject.includeDottedModule", useModule)
+ };
+ params.setOverriddenValues(overridden);
+ TopLevelProjectPtr project = loader->loadProject(params);
+ QVERIFY(expectSuccess);
+ QVERIFY(!!project);
+ QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
+ QCOMPARE(products.size(), useProduct ? 2 : 1);
+ const ResolvedProductPtr product = products.value("p");
+ QVERIFY(!!product);
+ QCOMPARE(product->moduleProperties->moduleProperty("a.b", "c").toString(), QString("p"));
+ QCOMPARE(product->moduleProperties->moduleProperty("x.y", "z").toString(), QString("p"));
+ } catch (const ErrorInfo &e) {
+ QVERIFY(!expectSuccess);
+ QFETCH(QString, expectedErrorMessage);
+ if (!expectedErrorMessage.isEmpty())
+ QVERIFY2(e.toString().contains(expectedErrorMessage), qPrintable(e.toString()));
+ }
+}
+
void TestLanguage::emptyJsFile()
{
bool exceptionCaught = false;