aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlmoduleplugin
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-22 19:48:02 +0200
committerUlf Hermann <ulf.hermann@qt.io>2021-07-01 13:25:56 +0200
commit79d0517a123af3195f2e8c4d99964ed91bf8c0ee (patch)
tree99ed7e7128dfd332e8349d4ea7a921bb0bc4dbd1 /tests/auto/qml/qqmlmoduleplugin
parent37540467ca516c3732bd276f49e27db824b4ea0b (diff)
CMake: Always add the qmldir to the resource file system
We want to be able to load modules directly from the resource file system, no matter if we build statically or dynamically. It's limited by the need to load plugins, of course, but as most plugins are optional an application can easily go this way and never include any plain QML files in an application bundle. Pick-to: 6.2 Change-Id: I94657a43b47e442722a83e1fb306680aa50b1bc3 Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmlmoduleplugin')
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/CMakeLists.txt12
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml2
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/badqmldir3
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/qmldir2
-rw-r--r--tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp11
5 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlmoduleplugin/CMakeLists.txt b/tests/auto/qml/qqmlmoduleplugin/CMakeLists.txt
index 58a52919ea..18bd80b588 100644
--- a/tests/auto/qml/qqmlmoduleplugin/CMakeLists.txt
+++ b/tests/auto/qml/qqmlmoduleplugin/CMakeLists.txt
@@ -56,6 +56,18 @@ qt_internal_add_resource(tst_qqmlmoduleplugin "qmake_staticPlugin"
${qmake_staticPlugin_resource_files}
)
+set_source_files_properties("imports/ModuleFromQrc/badqmldir"
+ PROPERTIES QT_RESOURCE_ALIAS "imports/ModuleFromQrc/qmldir"
+)
+
+qt_internal_add_resource(tst_qqmlmoduleplugin "moduleFromQrc"
+ PREFIX
+ "/foo/"
+ FILES
+ "imports/ModuleFromQrc/badqmldir"
+ "imports/ModuleFromQrc/Foo.qml"
+)
+
#### Keys ignored in scope 2:.:.:tst_qqmlmoduleplugin.pro:<TRUE>:
# CONFIG = "testcase" "-app_bundle"
diff --git a/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml
new file mode 100644
index 0000000000..54531c4bdc
--- /dev/null
+++ b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/Foo.qml
@@ -0,0 +1,2 @@
+import QtQml
+QtObject {}
diff --git a/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/badqmldir b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/badqmldir
new file mode 100644
index 0000000000..90b20ece96
--- /dev/null
+++ b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/badqmldir
@@ -0,0 +1,3 @@
+module ModuleFromQrc
+plugin badbad
+Foo 1.0 Foo.qml
diff --git a/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/qmldir b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/qmldir
new file mode 100644
index 0000000000..56587be685
--- /dev/null
+++ b/tests/auto/qml/qqmlmoduleplugin/imports/ModuleFromQrc/qmldir
@@ -0,0 +1,2 @@
+module ModuleFromQrc
+Foo 1.0 Foo.qml
diff --git a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp
index 028c083dcb..e5330f12be 100644
--- a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp
+++ b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp
@@ -86,6 +86,7 @@ private slots:
void parallelPluginImport();
void multiSingleton();
void optionalPlugin();
+ void moduleFromQrc();
private:
QString m_importsDirectory;
@@ -830,6 +831,16 @@ void tst_qqmlmoduleplugin::optionalPlugin()
QVERIFY(!object10.isNull());
}
+void tst_qqmlmoduleplugin::moduleFromQrc()
+{
+ QQmlEngine engine;
+ engine.setImportPathList({ QStringLiteral(":/foo/imports/"), m_dataImportsDirectory });
+ QQmlComponent component(&engine);
+ component.setData("import ModuleFromQrc\nFoo {}\n", QUrl());
+ QVERIFY2(component.isReady(), qPrintable(component.errorString()));
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(!object.isNull());
+}
QTEST_MAIN(tst_qqmlmoduleplugin)