summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-03-27 19:05:35 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-03-28 11:04:59 +0100
commit3473687f4283107caf07616ae818bc685ea7458f (patch)
tree50bf72bfa81cbb87e72cd2bb19f80eb2f3f3330d
parentc69acba275655610d4eb804987a0f56c52c12def (diff)
downloadqbs-3473687f4283107caf07616ae818bc685ea7458f.tar.gz
add autotest for the moduleProperties function
Change-Id: Id7415769d512131c2487b3d7c21259c308c9a56a Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/testdata/moduleproperties.qbs21
-rw-r--r--src/lib/language/testdata/modules/dummy/dummy.qbs1
-rw-r--r--src/lib/language/testdata/modules/dummyqt/core/dummycore.qbs3
-rw-r--r--src/lib/language/testdata/modules/dummyqt/gui/dummygui.qbs3
-rw-r--r--src/lib/language/testdata/modules/dummyqt/network/dummynetwork.qbs3
-rw-r--r--src/lib/language/tst_language.cpp61
-rw-r--r--src/lib/language/tst_language.h2
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();