mirror of
https://github.com/Icinga/icinga2.git
synced 2025-08-20 09:08:16 +02:00
This adds a global fixture that can parse an additional argument to the test executables (`--generate_ctest_config`). When run by CMake during build, this generates a CTest script containing all the tests and their properties. An additional decorator, that defines CTest properties for a test case or suite that will be added to the tests during config generation. This version needs no hacks, no huge CMake scripts, just a bit of additional C++ code that iterates over all test-cases and collects the information CTest needs. One caveat is still that this does not work with cross-compilation, which probably isn't an issue to begin with, but there are also ways to fix that if necessary.
19 lines
682 B
CMake
19 lines
682 B
CMake
# Icinga 2 | (c) 2025 Icinga GmbH | GPLv2+
|
|
|
|
# Needed because CMAKE_CURRENT_FUNCTION_LIST_DIR is 3.15+
|
|
set(DISCOVER_BOOST_TESTS_SCRIPT_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
function(target_discover_boost_tests target)
|
|
set(testfile "${CMAKE_CURRENT_BINARY_DIR}/${target}_tests.cmake")
|
|
set(args -- --generate_ctest_config "${testfile}")
|
|
string(REPLACE ";" "$<SEMICOLON>" test "${args}")
|
|
|
|
add_custom_command(TARGET "${target}" POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -DCMD=$<TARGET_FILE:${target}> -DARGS="${test}" -P "${DISCOVER_BOOST_TESTS_SCRIPT_DIR}/ExecuteCommandQuietly.cmake"
|
|
)
|
|
|
|
set_property(DIRECTORY
|
|
APPEND PROPERTY TEST_INCLUDE_FILES "${testfile}"
|
|
)
|
|
endfunction()
|