aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quicktest
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2019-03-08 10:51:57 +0100
committerMitch Curtis <mitch.curtis@qt.io>2019-03-21 09:07:14 +0000
commit52ac0ea8cbdc9a2b8e895ceee09994fba229ee12 (patch)
treed279d868eb4d610138300a54b227559b9b29f3b3 /tests/auto/quicktest
parentc091f3f4b4889ac6be26e018c5e8b673adee7c47 (diff)
QUICK_TEST_MAIN_WITH_SETUP: fix qmlEngineAvailable() being called too late
When I added the macro, I wasn't aware that TestCaseCollector was a thing. TestCaseCollector loads each QML file without running the tests (i.e. creates a QQmlComponent from the file without creating an object from that component). Since it still executes imports, the test can fail if types are registered or import paths added in qmlEngineAvailable(), since it's called too late. So, call it earlier. This should have no adverse effect on user code, as nothing of importance to the user will be skipped, and the documentation already details what can be expected by the time qmlEngineAvailable() is called. Change-Id: Ibd3a4b728bc87b90f89cc310fddf668c5879ad83 Fixes: QTBUG-74160 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/quicktest')
-rw-r--r--tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml6
-rw-r--r--tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/ImportPathQmlType.qml3
-rw-r--r--tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/qmldir2
-rw-r--r--tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp14
4 files changed, 25 insertions, 0 deletions
diff --git a/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml b/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml
index 0f5466998a..ea6b3e014b 100644
--- a/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml
+++ b/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml
@@ -29,9 +29,15 @@
import QtQuick 2.0
import QtTest 1.2
+import QmlRegisterTypeCppModule 1.0
+import ImportPathQmlModule 1.0
+
TestCase {
name: "setup"
+ QmlRegisterTypeCppType {}
+ ImportPathQmlType {}
+
function initTestCase()
{
verify(qmlEngineAvailableCalled)
diff --git a/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/ImportPathQmlType.qml b/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/ImportPathQmlType.qml
new file mode 100644
index 0000000000..617bdaaf67
--- /dev/null
+++ b/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/ImportPathQmlType.qml
@@ -0,0 +1,3 @@
+import QtQuick 2.0
+
+Item {}
diff --git a/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/qmldir b/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/qmldir
new file mode 100644
index 0000000000..dea7c9a8a4
--- /dev/null
+++ b/tests/auto/quicktest/quicktestmainwithsetup/imports/ImportPathQmlModule/qmldir
@@ -0,0 +1,2 @@
+module ImportPathQmlModule
+ImportPathQmlType 1.0 ImportPathQmlType.qml
diff --git a/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp b/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp
index b0545d1a95..b5deeceac4 100644
--- a/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp
+++ b/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp
@@ -35,6 +35,14 @@
#include "../../shared/util.h"
+class QmlRegisterTypeCppType : public QObject
+{
+ Q_OBJECT
+
+public:
+ QmlRegisterTypeCppType() {}
+};
+
class CustomTestSetup : public QObject
{
Q_OBJECT
@@ -45,6 +53,12 @@ public:
public slots:
void qmlEngineAvailable(QQmlEngine *qmlEngine)
{
+ // Test that modules are successfully imported by the TestCaseCollector that
+ // parses the QML files (but doesn't run them). For that to happen, qmlEngineAvailable()
+ // must be called before TestCaseCollector does its thing.
+ qmlRegisterType<QmlRegisterTypeCppType>("QmlRegisterTypeCppModule", 1, 0, "QmlRegisterTypeCppType");
+ qmlEngine->addImportPath(QString::fromUtf8(QT_QMLTEST_DATADIR) + "/../imports");
+
qmlEngine->rootContext()->setContextProperty("qmlEngineAvailableCalled", true);
}
};