summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-04-05 14:28:15 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-04-10 11:59:59 +0200
commit8ee0a59cf3eb3b3c1eb65596c9cc2be29fb1e3d2 (patch)
tree6837de0c94a34091e50af000f54f6fefa6312e98
parenta8cfe301bc3cdb77bbc6112482aaf20723f59593 (diff)
downloadqbs-8ee0a59cf3eb3b3c1eb65596c9cc2be29fb1e3d2.tar.gz
add autotest for the scope of overridden module properties
Task-number: QBS-252 Change-Id: Ib76f7a17374600a4e4f8145dbc2155c62d9ca485 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/testdata/modules/scopemod/scopemod.qbs12
-rw-r--r--src/lib/language/testdata/modulescope.qbs15
-rw-r--r--src/lib/language/testdata/modulescope_base.qbs6
-rw-r--r--src/lib/language/tst_language.cpp44
-rw-r--r--src/lib/language/tst_language.h1
5 files changed, 78 insertions, 0 deletions
diff --git a/src/lib/language/testdata/modules/scopemod/scopemod.qbs b/src/lib/language/testdata/modules/scopemod/scopemod.qbs
new file mode 100644
index 000000000..ba7dbcbf0
--- /dev/null
+++ b/src/lib/language/testdata/modules/scopemod/scopemod.qbs
@@ -0,0 +1,12 @@
+import qbs 1.0
+
+Module {
+ property int a: 1
+ property int b: 1
+ property int c: a + 1
+ property int d: b + 1
+ property int e: 1
+ property int f: 1
+ property int g: 1
+ property int h: 1
+}
diff --git a/src/lib/language/testdata/modulescope.qbs b/src/lib/language/testdata/modulescope.qbs
new file mode 100644
index 000000000..01a7e0cc0
--- /dev/null
+++ b/src/lib/language/testdata/modulescope.qbs
@@ -0,0 +1,15 @@
+import qbs 1.0
+import "modulescope_base.qbs" as MyProduct
+
+Project {
+ MyProduct {
+ name: "product1"
+ Depends { name: "scopemod" }
+ property int e: 12
+ property int f: 13
+ scopemod.a: 2
+ scopemod.f: 2
+ scopemod.g: e * f
+ scopemod.h: base + 2
+ }
+}
diff --git a/src/lib/language/testdata/modulescope_base.qbs b/src/lib/language/testdata/modulescope_base.qbs
new file mode 100644
index 000000000..16a9875fa
--- /dev/null
+++ b/src/lib/language/testdata/modulescope_base.qbs
@@ -0,0 +1,6 @@
+import qbs 1.0
+
+Product {
+ Depends { name: "scopemod" }
+ scopemod.h: e * f
+}
diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp
index 3da4c4b3f..c8001aa89 100644
--- a/src/lib/language/tst_language.cpp
+++ b/src/lib/language/tst_language.cpp
@@ -544,6 +544,50 @@ void TestLanguage::moduleProperties()
QCOMPARE(valueStrings, expectedValues);
}
+void TestLanguage::moduleScope()
+{
+ class IntPropertyFinder
+ {
+ const QVariantMap &m_properties;
+ public:
+ IntPropertyFinder(const QVariantMap &properties)
+ : m_properties(properties)
+ {}
+
+ int intValue(const QString &name)
+ {
+ return PropertyFinder().propertyValue(m_properties, "scopemod", name).toInt();
+ }
+ };
+
+ bool exceptionCaught = false;
+ try {
+ defaultParameters.projectFilePath = testProject("modulescope.qbs");
+ ResolvedProjectPtr project = loader->loadProject(defaultParameters);
+ QVERIFY(project);
+ QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
+ QCOMPARE(products.count(), 1);
+ ResolvedProductPtr product = products.value("product1");
+ QVERIFY(product);
+ IntPropertyFinder ipf(product->properties->value());
+ QCOMPARE(ipf.intValue("a"), 2); // overridden in module instance
+ QCOMPARE(ipf.intValue("b"), 1); // genuine
+ QCOMPARE(ipf.intValue("c"), 3); // genuine, dependent on overridden value
+ QCOMPARE(ipf.intValue("d"), 2); // genuine, dependent on genuine value
+ QCOMPARE(ipf.intValue("e"), 1); // genuine
+ QCOMPARE(ipf.intValue("f"), 2); // overridden
+ QEXPECT_FAIL("", "QBS-252", Abort);
+ QCOMPARE(ipf.intValue("g"), 156); // overridden, dependent on product properties
+ QCOMPARE(ipf.intValue("h"), 158); // overridden, base dependent on product properties
+ }
+ catch (const Error &e) {
+ exceptionCaught = true;
+ qDebug() << e.toString();
+ }
+ QCOMPARE(exceptionCaught, false);
+
+}
+
void TestLanguage::modules_data()
{
QTest::addColumn<QStringList>("expectedModulesInProduct");
diff --git a/src/lib/language/tst_language.h b/src/lib/language/tst_language.h
index 452e57e50..d1adc9618 100644
--- a/src/lib/language/tst_language.h
+++ b/src/lib/language/tst_language.h
@@ -79,6 +79,7 @@ private slots:
void jsImportUsedInMultipleScopes();
void moduleProperties_data();
void moduleProperties();
+ void moduleScope();
void modules_data();
void modules();
void outerInGroup();