diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-22 19:48:02 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-07-01 13:25:56 +0200 |
commit | 79d0517a123af3195f2e8c4d99964ed91bf8c0ee (patch) | |
tree | 99ed7e7128dfd332e8349d4ea7a921bb0bc4dbd1 /tests/auto/qml/qqmlmoduleplugin | |
parent | 37540467ca516c3732bd276f49e27db824b4ea0b (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')
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) |