diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-03-27 19:05:35 +0100 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-03-28 11:04:59 +0100 |
| commit | 3473687f4283107caf07616ae818bc685ea7458f (patch) | |
| tree | 50bf72bfa81cbb87e72cd2bb19f80eb2f3f3330d | |
| parent | c69acba275655610d4eb804987a0f56c52c12def (diff) | |
| download | qbs-3473687f4283107caf07616ae818bc685ea7458f.tar.gz | |
add autotest for the moduleProperties function
Change-Id: Id7415769d512131c2487b3d7c21259c308c9a56a
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
7 files changed, 91 insertions, 3 deletions
diff --git a/src/lib/language/testdata/moduleproperties.qbs b/src/lib/language/testdata/moduleproperties.qbs new file mode 100644 index 000000000..c466a15cf --- /dev/null +++ b/src/lib/language/testdata/moduleproperties.qbs @@ -0,0 +1,21 @@ +import qbs 1.0 + +Project { + Product { + name: "merge_lists" + Depends { name: "dummyqt"; submodules: ["gui", "network"] } + Depends { name: "dummy" } + dummy.defines: ["THE_PRODUCT"] + } + Product { + name: "merge_lists_and_values" + Depends { name: "dummyqt"; submodules: ["network", "gui"] } + Depends { name: "dummy" } + dummy.defines: "THE_PRODUCT" + } + Product { + name: "merge_lists_with_duplicates" + Depends { name: "dummy" } + dummy.cxxFlags: ["-foo", "BAR", "-foo", "BAZ"] + } +} diff --git a/src/lib/language/testdata/modules/dummy/dummy.qbs b/src/lib/language/testdata/modules/dummy/dummy.qbs index 854e15c88..1833d1a3a 100644 --- a/src/lib/language/testdata/modules/dummy/dummy.qbs +++ b/src/lib/language/testdata/modules/dummy/dummy.qbs @@ -3,4 +3,5 @@ import "dummy_base.qbs" as DummyBase DummyBase { property var defines property pathList includePaths + property var cxxFlags } diff --git a/src/lib/language/testdata/modules/dummyqt/core/dummycore.qbs b/src/lib/language/testdata/modules/dummyqt/core/dummycore.qbs index 971062d65..13f5e6fc1 100644 --- a/src/lib/language/testdata/modules/dummyqt/core/dummycore.qbs +++ b/src/lib/language/testdata/modules/dummyqt/core/dummycore.qbs @@ -8,4 +8,7 @@ Module { property string version: versionMajor.toString() + "." + versionMinor.toString() + "." + versionPatch.toString() property string coreProperty: "coreProperty" property string coreVersion: qtcore.version + + Depends { name: "dummy" } + dummy.defines: ["QT_CORE"] } diff --git a/src/lib/language/testdata/modules/dummyqt/gui/dummygui.qbs b/src/lib/language/testdata/modules/dummyqt/gui/dummygui.qbs index 74987561e..a42003c34 100644 --- a/src/lib/language/testdata/modules/dummyqt/gui/dummygui.qbs +++ b/src/lib/language/testdata/modules/dummyqt/gui/dummygui.qbs @@ -3,4 +3,7 @@ import qbs 1.0 Module { Depends { name: "dummyqt.core" } property string guiProperty: "guiProperty" + + Depends { name: "dummy" } + dummy.defines: ["QT_GUI"] } diff --git a/src/lib/language/testdata/modules/dummyqt/network/dummynetwork.qbs b/src/lib/language/testdata/modules/dummyqt/network/dummynetwork.qbs index b1193be5a..2da3af050 100644 --- a/src/lib/language/testdata/modules/dummyqt/network/dummynetwork.qbs +++ b/src/lib/language/testdata/modules/dummyqt/network/dummynetwork.qbs @@ -3,4 +3,7 @@ import qbs 1.0 Module { Depends { name: "dummyqt"; submodules: ["core"] } property string networkProperty: "networkProperty" + + Depends { name: "dummy" } + dummy.defines: ["QT_NETWORK"] } diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp index a116d91cc..b595773d0 100644 --- a/src/lib/language/tst_language.cpp +++ b/src/lib/language/tst_language.cpp @@ -491,6 +491,60 @@ void TestLanguage::jsImportUsedInMultipleScopes() QVERIFY(!exceptionCaught); } +void TestLanguage::moduleProperties_data() +{ + QTest::addColumn<QString>("propertyName"); + QTest::addColumn<QStringList>("expectedValues"); + QTest::newRow("init") << QString() << QStringList(); + QTest::newRow("merge_lists") + << "defines" + << (QStringList() << "THE_PRODUCT" << "QT_CORE" << "QT_GUI" << "QT_NETWORK"); + QTest::newRow("merge_lists_and_values") + << "defines" + << (QStringList() << "THE_PRODUCT" << "QT_CORE" << "QT_GUI" << "QT_NETWORK"); + QTest::newRow("merge_lists_with_duplicates") + << "cxxFlags" + << (QStringList() << "-foo" << "BAR" << "-foo" << "BAZ"); + QTest::newRow("cleanup") << QString() << QStringList(); +} + +void TestLanguage::moduleProperties() +{ + QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); + if (productName == "init") { + bool exceptionCaught = false; + try { + defaultParameters.projectFilePath = testProject("moduleproperties.qbs"); + project = loader->loadProject(defaultParameters); + QVERIFY(project); + } catch (const Error &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); + return; + } else if (productName == "cleanup") { + project.clear(); + return; + } + + QVERIFY(project); + QFETCH(QString, propertyName); + QFETCH(QStringList, expectedValues); + QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + ResolvedProductPtr product = products.value(productName); + QVERIFY(product); + QVariantList values = PropertyFinder().propertyValues(product->properties->value(), + "dummy", propertyName, + PropertyFinder::DoMergeLists); + QStringList valueStrings; + foreach (const QVariant &v, values) + valueStrings += v.toString(); + if (product->name == "merge_lists_with_duplicates") + QEXPECT_FAIL("", "This is broken.", Continue); + QCOMPARE(valueStrings, expectedValues); +} + void TestLanguage::modules_data() { QTest::addColumn<QStringList>("expectedModulesInProduct"); @@ -500,13 +554,14 @@ void TestLanguage::modules_data() << (QStringList() << "qbs") << QString(); QTest::newRow("qt_core") - << (QStringList() << "qbs" << "dummyqt/core") + << (QStringList() << "qbs" << "dummy" << "dummyqt/core") << QString("1.2.3"); QTest::newRow("qt_gui") - << (QStringList() << "qbs" << "dummyqt/core" << "dummyqt/gui") + << (QStringList() << "qbs" << "dummy" << "dummyqt/core" << "dummyqt/gui") << QString("guiProperty"); QTest::newRow("qt_gui_network") - << (QStringList() << "qbs" << "dummyqt/core" << "dummyqt/gui" << "dummyqt/network") + << (QStringList() << "qbs" << "dummy" << "dummyqt/core" << "dummyqt/gui" + << "dummyqt/network") << QString("guiProperty,networkProperty"); QTest::newRow("cleanup") << QStringList(); } diff --git a/src/lib/language/tst_language.h b/src/lib/language/tst_language.h index cd8ea045b..4f4ce19b6 100644 --- a/src/lib/language/tst_language.h +++ b/src/lib/language/tst_language.h @@ -76,6 +76,8 @@ private slots: void idUsage(); void jsImportUsedInMultipleScopes_data(); void jsImportUsedInMultipleScopes(); + void moduleProperties_data(); + void moduleProperties(); void modules_data(); void modules(); void outerInGroup(); |
