diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-04-05 14:28:15 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-04-10 11:59:59 +0200 |
| commit | 8ee0a59cf3eb3b3c1eb65596c9cc2be29fb1e3d2 (patch) | |
| tree | 6837de0c94a34091e50af000f54f6fefa6312e98 | |
| parent | a8cfe301bc3cdb77bbc6112482aaf20723f59593 (diff) | |
| download | qbs-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.qbs | 12 | ||||
| -rw-r--r-- | src/lib/language/testdata/modulescope.qbs | 15 | ||||
| -rw-r--r-- | src/lib/language/testdata/modulescope_base.qbs | 6 | ||||
| -rw-r--r-- | src/lib/language/tst_language.cpp | 44 | ||||
| -rw-r--r-- | src/lib/language/tst_language.h | 1 |
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(); |
