aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt44
-rw-r--r--tests/ECMQmlModuleTest/CMakeLists.txt32
-rw-r--r--tests/ECMQmlModuleTest/QmlModule.qml11
-rw-r--r--tests/ECMQmlModuleTest/check.cmake.in64
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_depends6
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_depends.license2
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_full5
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_full.license2
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_qmlonly3
-rw-r--r--tests/ECMQmlModuleTest/qmldir_expected_qmlonly.license2
-rw-r--r--tests/ECMQmlModuleTest/qmlmodule.cpp14
-rw-r--r--tests/ECMQmlModuleTest/qmlmodule.h21
12 files changed, 206 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index b2143ec9..7ffcfd03 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -209,6 +209,50 @@ set_package_properties(
)
if (TARGET Qt5::Quick)
add_test_macro(ECMQMLModules dummy)
+
+ set(ECMQmlModuleTest.static_full_EXTRA_OPTIONS
+ --build-target install
+ --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full/install
+ -DBUILD_SHARED_LIBS=OFF
+ )
+ add_test_variant(ECMQmlModuleTest.static_full ECMQmlModuleTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full/check.cmake"
+ )
+ set(ECMQmlModuleTest.shared_full_EXTRA_OPTIONS
+ --build-target install
+ --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full/install
+ -DBUILD_SHARED_LIBS=ON
+ )
+ add_test_variant(ECMQmlModuleTest.shared_full ECMQmlModuleTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full/check.cmake"
+ )
+ set(ECMQmlModuleTest.static_qmlonly_EXTRA_OPTIONS
+ --build-target install
+ --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly/install
+ -DBUILD_SHARED_LIBS=OFF
+ -DQML_ONLY=ON
+ )
+ add_test_variant(ECMQmlModuleTest.static_qmlonly ECMQmlModuleTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly/check.cmake"
+ )
+ set(ECMQmlModuleTest.shared_qmlonly_EXTRA_OPTIONS
+ --build-target install
+ --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly/install
+ -DBUILD_SHARED_LIBS=ON
+ -DQML_ONLY=ON
+ )
+ add_test_variant(ECMQmlModuleTest.shared_qmlonly ECMQmlModuleTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly/check.cmake"
+ )
+ set(ECMQmlModuleTest.shared_depends_EXTRA_OPTIONS
+ --build-target install
+ --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends/install
+ -DBUILD_SHARED_LIBS=ON
+ -DDEPENDS=ON
+ )
+ add_test_variant(ECMQmlModuleTest.shared_depends ECMQmlModuleTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends/check.cmake"
+ )
endif()
set(ECMConfiguredInstallTest_EXTRA_OPTIONS
diff --git a/tests/ECMQmlModuleTest/CMakeLists.txt b/tests/ECMQmlModuleTest/CMakeLists.txt
new file mode 100644
index 00000000..49d76594
--- /dev/null
+++ b/tests/ECMQmlModuleTest/CMakeLists.txt
@@ -0,0 +1,32 @@
+#
+# SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(extra-cmake-modules)
+cmake_minimum_required(VERSION 3.5)
+
+set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../modules)
+set(CMAKE_MODULE_PATH "${ECM_FIND_MODULE_DIR}" "${ECM_MODULE_DIR}")
+
+find_package(Qt5 REQUIRED COMPONENTS Qml)
+include(ECMQmlModule)
+
+if(QML_ONLY)
+ ecm_add_qml_module(TestModule URI Test NO_PLUGIN)
+else()
+ ecm_add_qml_module(TestModule URI Test)
+ target_sources(TestModule PRIVATE qmlmodule.cpp)
+ target_link_libraries(TestModule Qt5::Qml)
+endif()
+
+if (DEPENDS)
+ ecm_add_qml_module_dependencies(TestModule DEPENDS OtherTest)
+endif()
+
+ecm_target_qml_sources(TestModule SOURCES QmlModule.qml)
+
+ecm_finalize_qml_module(TestModule DESTINATION "test")
+
+# this will be run by CTest
+configure_file(check.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/check.cmake" @ONLY)
diff --git a/tests/ECMQmlModuleTest/QmlModule.qml b/tests/ECMQmlModuleTest/QmlModule.qml
new file mode 100644
index 00000000..ce16c9db
--- /dev/null
+++ b/tests/ECMQmlModuleTest/QmlModule.qml
@@ -0,0 +1,11 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+import QtQuick 2.15
+
+Item {
+
+}
diff --git a/tests/ECMQmlModuleTest/check.cmake.in b/tests/ECMQmlModuleTest/check.cmake.in
new file mode 100644
index 00000000..af64a120
--- /dev/null
+++ b/tests/ECMQmlModuleTest/check.cmake.in
@@ -0,0 +1,64 @@
+#
+# SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+set(SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
+set(INSTALL_DIR "@CMAKE_INSTALL_PREFIX@/test")
+set(SHARED "@BUILD_SHARED_LIBS@")
+set(QML_ONLY "@QML_ONLY@")
+set(DEPENDS "@DEPENDS@")
+
+function(check_file_exists file)
+ if (NOT EXISTS ${file})
+ message(FATAL_ERROR "File \"${file}\" does not exist")
+ endif()
+endfunction()
+
+function (check_file_contents)
+ cmake_parse_arguments(ARGS "" "GENERATED;EXPECTED" "" ${ARGN})
+
+ if (NOT EXISTS "${ARGS_GENERATED}")
+ message(FATAL_ERROR "${ARGS_GENERATED} was not generated")
+ endif()
+ file(READ "${ARGS_GENERATED}" generated_contents)
+ if (NOT EXISTS "${ARGS_EXPECTED}")
+ message(FATAL_ERROR "Original ${ARGS_EXPECTED} was not found")
+ endif()
+ file(READ "${ARGS_EXPECTED}" original_contents)
+ if (NOT "${generated_contents}" STREQUAL "${original_contents}")
+ message(FATAL_ERROR "${generated_file} contains '${generated_contents}' instead of '${original_contents}'")
+ endif()
+endfunction()
+
+if (SHARED)
+ check_file_contents(
+ GENERATED "${INSTALL_DIR}/Test/QmlModule.qml"
+ EXPECTED "${SOURCE_DIR}/QmlModule.qml"
+ )
+
+ if (NOT QML_ONLY AND NOT DEPENDS)
+ check_file_exists("${INSTALL_DIR}/Test/libTestModule.so")
+
+ check_file_contents(
+ GENERATED "${INSTALL_DIR}/Test/qmldir"
+ EXPECTED "${SOURCE_DIR}/qmldir_expected_full"
+ )
+ endif()
+
+ if (QML_ONLY AND NOT DEPENDS)
+ check_file_contents(
+ GENERATED "${INSTALL_DIR}/Test/qmldir"
+ EXPECTED "${SOURCE_DIR}/qmldir_expected_qmlonly"
+ )
+ endif()
+
+ if (DEPENDS)
+ check_file_contents(
+ GENERATED "${INSTALL_DIR}/Test/qmldir"
+ EXPECTED "${SOURCE_DIR}/qmldir_expected_depends"
+ )
+ endif()
+else()
+ check_file_exists("${INSTALL_DIR}/Test/libTestModule.a")
+endif()
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_depends b/tests/ECMQmlModuleTest/qmldir_expected_depends
new file mode 100644
index 00000000..2f373e2f
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_depends
@@ -0,0 +1,6 @@
+# This file was automatically generated by ECMQmlModule and should not be modified
+module Test
+plugin TestModule
+classname TestModule
+depends OtherTest
+QmlModule 1.0 QmlModule.qml
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_depends.license b/tests/ECMQmlModuleTest/qmldir_expected_depends.license
new file mode 100644
index 00000000..8ebd85e2
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_depends.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+SPDX-License-Identifier: CC0
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_full b/tests/ECMQmlModuleTest/qmldir_expected_full
new file mode 100644
index 00000000..9a13246c
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_full
@@ -0,0 +1,5 @@
+# This file was automatically generated by ECMQmlModule and should not be modified
+module Test
+plugin TestModule
+classname TestModule
+QmlModule 1.0 QmlModule.qml
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_full.license b/tests/ECMQmlModuleTest/qmldir_expected_full.license
new file mode 100644
index 00000000..8ebd85e2
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_full.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+SPDX-License-Identifier: CC0
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_qmlonly b/tests/ECMQmlModuleTest/qmldir_expected_qmlonly
new file mode 100644
index 00000000..01823063
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_qmlonly
@@ -0,0 +1,3 @@
+# This file was automatically generated by ECMQmlModule and should not be modified
+module Test
+QmlModule 1.0 QmlModule.qml
diff --git a/tests/ECMQmlModuleTest/qmldir_expected_qmlonly.license b/tests/ECMQmlModuleTest/qmldir_expected_qmlonly.license
new file mode 100644
index 00000000..8ebd85e2
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmldir_expected_qmlonly.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+SPDX-License-Identifier: CC0
diff --git a/tests/ECMQmlModuleTest/qmlmodule.cpp b/tests/ECMQmlModuleTest/qmlmodule.cpp
new file mode 100644
index 00000000..a1552a86
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmlmodule.cpp
@@ -0,0 +1,14 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "qmlmodule.h"
+
+#include <QtQml/QQmlEngine>
+
+void QmlModule::registerTypes(const char* uri)
+{
+ Q_ASSERT(QLatin1String(uri) == QLatin1String("Test"));
+}
diff --git a/tests/ECMQmlModuleTest/qmlmodule.h b/tests/ECMQmlModuleTest/qmlmodule.h
new file mode 100644
index 00000000..49cd83a9
--- /dev/null
+++ b/tests/ECMQmlModuleTest/qmlmodule.h
@@ -0,0 +1,21 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef QMLMODULE_H
+#define QMLMODULE_H
+
+#include <QtQml/QQmlExtensionPlugin>
+
+class QmlModule : public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
+
+public:
+ void registerTypes(const char* uri) override;
+};
+
+#endif