diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-02-04 08:57:09 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-02-04 11:11:22 +0100 |
commit | 7c9fb0ae4fc7991e528c7db68889fbdf2c5fa3b8 (patch) | |
tree | 8810cd70edd764706609077e2200a8cf35096887 /tests/auto/language | |
parent | 7f7f9a4c2d867c3b8c21e57cda92b999b3c0946d (diff) |
add autotest for loading modules
Change-Id: If442778b8fc5830639bbea17e423bc3d0414ca23
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'tests/auto/language')
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(); |