aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-02-04 08:57:09 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-02-04 11:11:22 +0100
commit7c9fb0ae4fc7991e528c7db68889fbdf2c5fa3b8 (patch)
tree8810cd70edd764706609077e2200a8cf35096887 /tests/auto/language
parent7f7f9a4c2d867c3b8c21e57cda92b999b3c0946d (diff)
add autotest for loading modules
Change-Id: If442778b8fc5830639bbea17e423bc3d0414ca23 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'tests/auto/language')
-rw-r--r--tests/auto/language/testdata/modules.qbs24
-rw-r--r--tests/auto/language/testdata/modules/dummyqt/core/dummycore.qbs9
-rw-r--r--tests/auto/language/testdata/modules/dummyqt/gui/dummygui.qbs6
-rw-r--r--tests/auto/language/testdata/modules/dummyqt/network/dummynetwork.qbs6
-rw-r--r--tests/auto/language/tst_language.cpp49
-rw-r--r--tests/auto/language/tst_language.h2
6 files changed, 96 insertions, 0 deletions
diff --git a/tests/auto/language/testdata/modules.qbs b/tests/auto/language/testdata/modules.qbs
new file mode 100644
index 000000000..aab3f980a
--- /dev/null
+++ b/tests/auto/language/testdata/modules.qbs
@@ -0,0 +1,24 @@
+Project {
+ Product {
+ name: "no_modules"
+ }
+ Product {
+ name: "qt_core"
+ Depends {
+ name: "dummyqt.core"
+ }
+ }
+ Product {
+ name: "qt_gui"
+ Depends {
+ name: "dummyqt.gui"
+ }
+ }
+ Product {
+ name: "qt_gui_network"
+ Depends {
+ name: "dummyqt"
+ submodules: ["gui", "network"]
+ }
+ }
+}
diff --git a/tests/auto/language/testdata/modules/dummyqt/core/dummycore.qbs b/tests/auto/language/testdata/modules/dummyqt/core/dummycore.qbs
new file mode 100644
index 000000000..cd5d3eeb4
--- /dev/null
+++ b/tests/auto/language/testdata/modules/dummyqt/core/dummycore.qbs
@@ -0,0 +1,9 @@
+import qbs.base 1.0
+
+Module {
+ property int versionMajor: 5
+ property int versionMinor: 0
+ property int versionPatch: 0
+ property string version: versionMajor.toString() + "." + versionMinor.toString() + "." + versionPatch.toString()
+ property string coreProperty: "coreProperty"
+}
diff --git a/tests/auto/language/testdata/modules/dummyqt/gui/dummygui.qbs b/tests/auto/language/testdata/modules/dummyqt/gui/dummygui.qbs
new file mode 100644
index 000000000..b85ab863a
--- /dev/null
+++ b/tests/auto/language/testdata/modules/dummyqt/gui/dummygui.qbs
@@ -0,0 +1,6 @@
+import qbs.base 1.0
+
+Module {
+ Depends { name: "dummyqt.core" }
+ property string guiProperty: "coreProperty"
+}
diff --git a/tests/auto/language/testdata/modules/dummyqt/network/dummynetwork.qbs b/tests/auto/language/testdata/modules/dummyqt/network/dummynetwork.qbs
new file mode 100644
index 000000000..8934c9b46
--- /dev/null
+++ b/tests/auto/language/testdata/modules/dummyqt/network/dummynetwork.qbs
@@ -0,0 +1,6 @@
+import qbs.base 1.0
+
+Module {
+ Depends { name: "dummyqt"; submodules: ["core"] }
+ property string networkProperty: "networkProperty"
+}
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index dd97d369a..1353ce54e 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -305,6 +305,55 @@ void TestLanguage::jsImportUsedInMultipleScopes()
QVERIFY(!exceptionCaught);
}
+void TestLanguage::modules_data()
+{
+ QTest::addColumn<QStringList>("expectedModulesInProduct");
+ QTest::newRow("init") << QStringList();
+ QTest::newRow("no_modules")
+ << (QStringList() << "qbs");
+ QTest::newRow("qt_core")
+ << (QStringList() << "qbs" << "dummyqt/core");
+ QTest::newRow("qt_gui")
+ << (QStringList() << "qbs" << "dummyqt/core" << "dummyqt/gui");
+ QTest::newRow("qt_gui_network")
+ << (QStringList() << "qbs" << "dummyqt/core" << "dummyqt/gui" << "dummyqt/network");
+ QTest::newRow("cleanup") << QStringList();
+}
+
+void TestLanguage::modules()
+{
+ QString productName = QString::fromLocal8Bit(QTest::currentDataTag());
+ if (productName == "init") {
+ bool exceptionCaught = false;
+ try {
+ defaultParameters.projectFilePath = SRCDIR "testdata/modules.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(QStringList, expectedModulesInProduct);
+ QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
+ ResolvedProductPtr product = products.value(productName);
+ QVERIFY(product);
+ QCOMPARE(product->name, productName);
+ QStringList modulesInProduct;
+ foreach (ResolvedModuleConstPtr m, product->modules)
+ modulesInProduct += m->name;
+ modulesInProduct.sort();
+ expectedModulesInProduct.sort();
+ QCOMPARE(modulesInProduct, expectedModulesInProduct);
+}
+
void TestLanguage::outerInGroup()
{
bool exceptionCaught = false;
diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h
index 479333832..8fb5f2599 100644
--- a/tests/auto/language/tst_language.h
+++ b/tests/auto/language/tst_language.h
@@ -66,6 +66,8 @@ private slots:
void identifierSearch();
void jsImportUsedInMultipleScopes_data();
void jsImportUsedInMultipleScopes();
+ void modules_data();
+ void modules();
void outerInGroup();
void productConditions();
void propertiesBlocks_data();