aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/language/tst_language.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/language/tst_language.cpp')
-rw-r--r--tests/auto/language/tst_language.cpp79
1 files changed, 73 insertions, 6 deletions
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index 78a8caf1a..2d9c52615 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -1360,7 +1360,7 @@ void TestLanguage::modulePropertiesInGroups()
TopLevelProjectPtr project = loader->loadProject(defaultParameters);
QVERIFY(!!project);
const QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
- const ResolvedProductPtr product = products.value("grouptest");
+ ResolvedProductPtr product = products.value("grouptest");
QVERIFY(!!product);
GroupConstPtr g1;
GroupConstPtr g11;
@@ -1537,6 +1537,27 @@ void TestLanguage::modulePropertiesInGroups()
QEXPECT_FAIL(0, "re-eval not triggered", Continue);
QCOMPARE(g211Gmod2List, QStringList() << "g2.1.1" << "commonName_in_gmod1"
<< "g2.1.1_gmod4_g2.1.1_gmod3" << "g2.1.1_gmod3" << "gmod2_list_proto");
+
+ product = products.value("grouptest2");
+ QVERIFY(!!product);
+ g1.reset();
+ g11.reset();
+ foreach (const GroupConstPtr &g, product->groups) {
+ if (g->name == "g1")
+ g1= g;
+ else if (g->name == "g1.1")
+ g11 = g;
+ }
+ QVERIFY(!!g1);
+ QVERIFY(!!g11);
+ QCOMPARE(moduleProperty(g1->properties->value(), "gmod.gmod1", "gmod1_list2")
+ .toStringList(), QStringList({"G1"}));
+ QCOMPARE(moduleProperty(g11->properties->value(), "gmod.gmod1", "gmod1_list2")
+ .toStringList(),
+ moduleProperty(g1->properties->value(), "gmod.gmod1", "gmod1_list2")
+ .toStringList());
+ QCOMPARE(moduleProperty(g11->properties->value(), "gmod.gmod1", "gmod1_string").toString(),
+ QString("G1.1"));
} catch (const ErrorInfo &e) {
exceptionCaught = true;
qDebug() << e.toString();
@@ -1550,9 +1571,11 @@ void TestLanguage::modulePropertyOverridesPerProduct()
try {
SetupProjectParameters params = defaultParameters;
params.setOverriddenValues({
+ std::make_pair("modules.dummy.rpaths", QStringList({"/usr/lib"})),
std::make_pair("modules.dummy.someString", "m"),
std::make_pair("products.b.dummy.someString", "b"),
- std::make_pair("products.c.dummy.someString", "c")
+ std::make_pair("products.c.dummy.someString", "c"),
+ std::make_pair("products.c.dummy.rpaths", QStringList({"/home", "/tmp"}))
});
params.setProjectFilePath(
testProject("module-property-overrides-per-product.qbs"));
@@ -1567,14 +1590,28 @@ void TestLanguage::modulePropertyOverridesPerProduct()
const ResolvedProductConstPtr c = products.value("c");
QVERIFY(!!c);
- const auto propertyValue = [](const ResolvedProductConstPtr &p) -> QString
+ const auto stringPropertyValue = [](const ResolvedProductConstPtr &p) -> QString
{
return p->moduleProperties->moduleProperty("dummy", "someString").toString();
};
+ const auto listPropertyValue = [](const ResolvedProductConstPtr &p) -> QStringList
+ {
+ return p->moduleProperties->moduleProperty("dummy", "rpaths").toStringList();
+ };
+ const auto productPropertyValue = [](const ResolvedProductConstPtr &p) -> QStringList
+ {
+ return p->productProperties.value("rpaths").toStringList();
+ };
- QCOMPARE(propertyValue(a), QString("m"));
- QCOMPARE(propertyValue(b), QString("b"));
- QCOMPARE(propertyValue(c), QString("c"));
+ QCOMPARE(stringPropertyValue(a), QString("m"));
+ QCOMPARE(stringPropertyValue(b), QString("b"));
+ QCOMPARE(stringPropertyValue(c), QString("c"));
+ QCOMPARE(listPropertyValue(a), QStringList({"/usr/lib"}));
+ QCOMPARE(listPropertyValue(b), QStringList({"/usr/lib"}));
+ QCOMPARE(listPropertyValue(c), QStringList({"/home", "/tmp"}));
+ QCOMPARE(listPropertyValue(a), productPropertyValue(a));
+ QCOMPARE(listPropertyValue(b), productPropertyValue(b));
+ QCOMPARE(listPropertyValue(c), productPropertyValue(c));
}
catch (const ErrorInfo &e) {
exceptionCaught = true;
@@ -1779,6 +1816,36 @@ void TestLanguage::outerInGroup()
QCOMPARE(exceptionCaught, false);
}
+void TestLanguage::overriddenPropertiesAndPrototypes()
+{
+ bool exceptionCaught = false;
+ try {
+ QFETCH(QString, osName);
+ QFETCH(QString, backendName);
+ SetupProjectParameters params = defaultParameters;
+ params.setProjectFilePath(testProject("overridden-properties-and-prototypes.qbs"));
+ params.setOverriddenValues({std::make_pair("modules.qbs.targetOS", osName)});
+ TopLevelProjectConstPtr project = loader->loadProject(params);
+ QVERIFY(!!project);
+ QCOMPARE(project->products.count(), 1);
+ QCOMPARE(project->products.first()->moduleProperties->moduleProperty(
+ "multiple-backends", "prop").toString(), backendName);
+ }
+ catch (const ErrorInfo &e) {
+ exceptionCaught = true;
+ qDebug() << e.toString();
+ }
+ QCOMPARE(exceptionCaught, false);
+}
+
+void TestLanguage::overriddenPropertiesAndPrototypes_data()
+{
+ QTest::addColumn<QString>("osName");
+ QTest::addColumn<QString>("backendName");
+ QTest::newRow("first backend") << "os1" << "backend 1";
+ QTest::newRow("second backend") << "os2" << "backend 2";
+}
+
void TestLanguage::parameterTypes()
{
bool exceptionCaught = false;