diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-11-09 17:49:30 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-11-12 12:31:09 +0000 |
commit | d1e04aae05e4ea17a6461cf323c9c15ede176b5b (patch) | |
tree | 7e4720afbc798051b8b8fc499b5cc7021bef3bfd /tests | |
parent | 5f1b52e1c6f7668c3ea21ec11fde818ee6efd521 (diff) |
Fix pluginSupport autotest
Our test machine does not have the image plugins we hardcoded, so be
more flexible. This also tightens the test a bit.
Change-Id: I0cc49b3066909ac3e4ec387515e689a00042f4d5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'tests')
5 files changed, 57 insertions, 11 deletions
diff --git a/tests/auto/blackbox/testdata-qt/plugin-support/modules/m1/m1.qbs b/tests/auto/blackbox/testdata-qt/plugin-support/modules/m1/m1.qbs index d634742f3..a4cad304f 100644 --- a/tests/auto/blackbox/testdata-qt/plugin-support/modules/m1/m1.qbs +++ b/tests/auto/blackbox/testdata-qt/plugin-support/modules/m1/m1.qbs @@ -1,4 +1,12 @@ Module { + property bool useDummy Depends { name: "Qt.plugin_support" } - Qt.plugin_support.pluginsByType: ({imageformats: "qjpeg"}) + Properties { + condition: useDummy + Qt.plugin_support.pluginsByType: ({imageformats: "dummy"}) + } + Properties { + condition: Qt.plugin_support.allPluginsByType && Qt.plugin_support.allPluginsByType.imageformats + Qt.plugin_support.pluginsByType: ({imageformats: Qt.plugin_support.allPluginsByType.imageformats[0]}) + } } diff --git a/tests/auto/blackbox/testdata-qt/plugin-support/modules/m2/m2.qbs b/tests/auto/blackbox/testdata-qt/plugin-support/modules/m2/m2.qbs index 4941495ff..c4730ab6b 100644 --- a/tests/auto/blackbox/testdata-qt/plugin-support/modules/m2/m2.qbs +++ b/tests/auto/blackbox/testdata-qt/plugin-support/modules/m2/m2.qbs @@ -1,4 +1,7 @@ Module { Depends { name: "Qt.plugin_support" } - Qt.plugin_support.pluginsByType: ({imageformats: "qgif"}) + Properties { + condition: Qt.plugin_support.allPluginsByType && Qt.plugin_support.allPluginsByType.imageformats + Qt.plugin_support.pluginsByType: ({imageformats: Qt.plugin_support.allPluginsByType.imageformats[1]}) + } } diff --git a/tests/auto/blackbox/testdata-qt/plugin-support/plugin-support.qbs b/tests/auto/blackbox/testdata-qt/plugin-support/plugin-support.qbs index 6ea0ecc51..c554a7dc2 100644 --- a/tests/auto/blackbox/testdata-qt/plugin-support/plugin-support.qbs +++ b/tests/auto/blackbox/testdata-qt/plugin-support/plugin-support.qbs @@ -3,9 +3,11 @@ QtGuiApplication { id: staticProbe property bool isStaticQt: Qt.gui.isStaticLibrary property var plugins: Qt.plugin_support.effectivePluginsByType + property var allPlugins: Qt.plugin_support.allPluginsByType configure: { console.info("static Qt: " + isStaticQt); - console.info("image plugins: " + plugins.imageformats); + console.info("requested image plugins: %" + plugins.imageformats + "%"); + console.info("all image plugins: #" + allPlugins.imageformats + "#"); console.info("platform plugin count: " + (plugins.platforms || []).length); } } diff --git a/tests/auto/blackbox/tst_blackboxqt.cpp b/tests/auto/blackbox/tst_blackboxqt.cpp index dfaaba504..ce97979e7 100644 --- a/tests/auto/blackbox/tst_blackboxqt.cpp +++ b/tests/auto/blackbox/tst_blackboxqt.cpp @@ -256,21 +256,53 @@ void TestBlackboxQt::pluginMetaData() QVERIFY2(m_qbsStdout.contains("moc"), m_qbsStdout.constData()); } +void TestBlackboxQt::pluginSupport_data() +{ + QTest::addColumn<bool>("invalidPlugin"); + QTest::newRow("request valid plugins") << false; + QTest::newRow("request invalid plugin") << true; +} + void TestBlackboxQt::pluginSupport() { QDir::setCurrent(testDataDir + "/plugin-support"); - QCOMPARE(runQbs(), 0); + QFETCH(bool, invalidPlugin); + QbsRunParameters resolveParams("resolve"); + if (invalidPlugin) { + resolveParams.arguments << "modules.m1.useDummy:true"; + resolveParams.expectFailure = true; + } + QCOMPARE(runQbs(resolveParams) == 0, !invalidPlugin); + if (invalidPlugin) { + QVERIFY2(m_qbsStderr.contains("Plugin 'dummy' of type 'imageformats' was requested, " + "but is not available"), m_qbsStderr.constData()); + return; + } const bool isStaticQt = m_qbsStdout.contains("static Qt: true"); const bool isDynamicQt = m_qbsStdout.contains("static Qt: false"); QVERIFY(isStaticQt != isDynamicQt); - QVERIFY2(!m_qbsStdout.contains("qt_plugin_import_qico.cpp"), m_qbsStdout.constData()); - if (isStaticQt) { - QVERIFY2(m_qbsStdout.contains("image plugins: qjpeg,qgif"), m_qbsStdout.constData()); + if (isStaticQt) QVERIFY2(m_qbsStdout.contains("platform plugin count: 1"), m_qbsStdout.constData()); - QVERIFY2(m_qbsStdout.contains("qt_plugin_import_qjpeg.cpp"), m_qbsStdout.constData()); - QVERIFY2(m_qbsStdout.contains("qt_plugin_import_qgif.cpp"), m_qbsStdout.constData()); - } else { - QSKIP("Qt is not static"); + else + QVERIFY2(m_qbsStdout.contains("platform plugin count: 0"), m_qbsStdout.constData()); + const auto extractList = [this](const char sep) { + const int listStartIndex = m_qbsStdout.indexOf(sep); + const int listEndIndex = m_qbsStdout.indexOf(sep, listStartIndex + 1); + const QByteArray listString = m_qbsStdout.mid(listStartIndex + 1, + listEndIndex - listStartIndex - 1); + return listString.isEmpty() ? QByteArrayList() : listString.split(','); + }; + const QByteArrayList enabledPlugins = extractList('%'); + if (isStaticQt) + QCOMPARE(enabledPlugins.size(), 2); + else + QVERIFY(enabledPlugins.empty()); + const QByteArrayList allPlugins = extractList('#'); + QVERIFY(allPlugins.size() >= enabledPlugins.size()); + QCOMPARE(runQbs(), 0); + for (const QByteArray &plugin : allPlugins) { + QCOMPARE(m_qbsStdout.contains("qt_plugin_import_" + plugin + ".cpp"), + enabledPlugins.contains(plugin)); } } diff --git a/tests/auto/blackbox/tst_blackboxqt.h b/tests/auto/blackbox/tst_blackboxqt.h index b843978d4..f42c225d8 100644 --- a/tests/auto/blackbox/tst_blackboxqt.h +++ b/tests/auto/blackbox/tst_blackboxqt.h @@ -57,6 +57,7 @@ private slots: void mocSameFileName(); void pkgconfig(); void pluginMetaData(); + void pluginSupport_data(); void pluginSupport(); void qmlDebugging(); void qobjectInObjectiveCpp(); |