diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-08-04 15:16:45 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-08-14 08:17:28 +0000 |
commit | c83ae7c3c01e17e00eff9a8aaf08807702578227 (patch) | |
tree | d6f15f2e70be05ff99f9793b0e64cb12e40c5271 | |
parent | 3255da1a9809f10ffa73f15a39977a086d1e4299 (diff) |
Add autotest checking that module loading respects property overrides
Change-Id: I938cb7a27d1bcc5cd9885a3aae7b5a076edb9ef2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
5 files changed, 50 insertions, 0 deletions
diff --git a/tests/auto/language/testdata/modules/multiple-backends/backend1.qbs b/tests/auto/language/testdata/modules/multiple-backends/backend1.qbs new file mode 100644 index 000000000..011f96af8 --- /dev/null +++ b/tests/auto/language/testdata/modules/multiple-backends/backend1.qbs @@ -0,0 +1,6 @@ +import qbs + +Module { + condition: qbs.targetOS.contains("os1") + property string prop: "backend 1" +} diff --git a/tests/auto/language/testdata/modules/multiple-backends/backend2.qbs b/tests/auto/language/testdata/modules/multiple-backends/backend2.qbs new file mode 100644 index 000000000..1d2d817f7 --- /dev/null +++ b/tests/auto/language/testdata/modules/multiple-backends/backend2.qbs @@ -0,0 +1,6 @@ +import qbs + +Module { + condition: qbs.targetOS.contains("os2") + property string prop: "backend 2" +} diff --git a/tests/auto/language/testdata/overridden-properties-and-prototypes.qbs b/tests/auto/language/testdata/overridden-properties-and-prototypes.qbs new file mode 100644 index 000000000..d87611d7c --- /dev/null +++ b/tests/auto/language/testdata/overridden-properties-and-prototypes.qbs @@ -0,0 +1,6 @@ +import qbs + +Product { + name: "p" + Depends { name: "multiple-backends" } +} diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp index 380d23669..9964c7055 100644 --- a/tests/auto/language/tst_language.cpp +++ b/tests/auto/language/tst_language.cpp @@ -1730,6 +1730,36 @@ void TestLanguage::outerInGroup() QCOMPARE(exceptionCaught, false); } +void TestLanguage::overriddenPropertiesAndPrototypes() +{ + bool exceptionCaught = false; + try { + QFETCH(QString, osName); + QFETCH(QString, backendName); + SetupProjectParameters params = defaultParameters; + params.setProjectFilePath(testProject("overridden-properties-and-prototypes.qbs")); + params.setOverriddenValues({std::make_pair("modules.qbs.targetOS", osName)}); + TopLevelProjectConstPtr project = loader->loadProject(params); + QVERIFY(project); + QCOMPARE(project->products.count(), 1); + QCOMPARE(project->products.first()->moduleProperties->moduleProperty( + "multiple-backends", "prop").toString(), backendName); + } + catch (const ErrorInfo &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); +} + +void TestLanguage::overriddenPropertiesAndPrototypes_data() +{ + QTest::addColumn<QString>("osName"); + QTest::addColumn<QString>("backendName"); + QTest::newRow("first backend") << "os1" << "backend 1"; + QTest::newRow("second backend") << "os2" << "backend 2"; +} + void TestLanguage::parameterTypes() { bool exceptionCaught = false; diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h index 62805ec2f..897a5cd3f 100644 --- a/tests/auto/language/tst_language.h +++ b/tests/auto/language/tst_language.h @@ -121,6 +121,8 @@ private slots: void nonRequiredProducts(); void nonRequiredProducts_data(); void outerInGroup(); + void overriddenPropertiesAndPrototypes(); + void overriddenPropertiesAndPrototypes_data(); void parameterTypes(); void pathProperties(); void productConditions(); |