Revision control

Copy as Markdown

# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
# This is an automatic test for the CMake configuration files.
# To run it manually,
# 1) mkdir build # Create a build directory
# 2) cd build
# 3) # Run cmake on this directory
# `$qt_prefix/bin/qt-cmake ..` or `cmake -DCMAKE_PREFIX_PATH=/path/to/qt ..`
# 4) ctest # Run ctest
# 5) ctest -V -R test_add_translation_macro # Run single test
#
# The expected output is something like:
#
# 1/2 Test #1: test_uiplugin_module ............. Passed 6.33 sec
# Start 4: test_uiplugin_via_designer
# 2/2 Test #2: test_uiplugin_via_designer ....... Passed 9.32 sec
#
#
# Note that if Qt is not installed, or if it is installed to a
# non-standard prefix, the environment variable CMAKE_PREFIX_PATH
# needs to be set to the installation prefix or build prefix of Qt
# before running these tests.
cmake_minimum_required(VERSION 3.16)
project(qttools_cmake_tests)
enable_testing()
set(required_packages Core)
set(optional_packages Widgets LinguistTools)
# Setup the test when called as a completely standalone project.
if(TARGET Qt6::Core)
# Tests are built as part of the qtbase build tree.
# Setup paths so that the Qt packages are found, similar to examples.
qt_internal_set_up_build_dir_package_paths()
endif()
find_package(Qt6 REQUIRED COMPONENTS ${required_packages})
find_package(Qt6 OPTIONAL_COMPONENTS ${optional_packages})
# Setup common test variables which were previously set by ctest_testcase_common.prf.
set(CMAKE_MODULES_UNDER_TEST "${required_packages}")
foreach(qt_package ${optional_packages})
set(package_name "${QT_CMAKE_EXPORT_NAMESPACE}${qt_package}")
list(APPEND CMAKE_MODULES_UNDER_TEST "${qt_package}")
endforeach()
foreach(qt_package ${CMAKE_MODULES_UNDER_TEST})
if(${package_name}_FOUND)
set(CMAKE_${qt_package}_MODULE_MAJOR_VERSION "${${package_name}_VERSION_MAJOR}")
set(CMAKE_${qt_package}_MODULE_MINOR_VERSION "${${package_name}_VERSION_MINOR}")
set(CMAKE_${qt_package}_MODULE_PATCH_VERSION "${${package_name}_VERSION_PATCH}")
endif()
endforeach()
include("${_Qt6CTestMacros}")
if (TARGET Qt6::Widgets)
_qt_internal_test_expect_pass(test_uiplugin_module)
_qt_internal_test_expect_pass(test_uiplugin_via_designer)
endif()
if(TARGET Qt6::lupdate)
add_subdirectory(linguist)
endif()
if(TARGET Qt6::objcnamemangler AND MACOS)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_replacement)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_random)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_codesign)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_quiet)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_exclude)
get_target_property(qt_namespace Qt6::Core QT_NAMESPACE)
if(qt_namespace)
_qt_internal_test_expect_pass(objcnamemangler/test_mangle_objc_symbols_qt_namespace)
endif()
endif()