2026-01-18 02:59:22 +00:00
|
|
|
# SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
|
2025-03-28 19:00:43 +00:00
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
|
|
|
|
|
## Use To create tests
|
|
|
|
|
function(create_test)
|
|
|
|
|
set(options)
|
|
|
|
|
set(oneValueArgs
|
|
|
|
|
NAME #NAME of new test
|
|
|
|
|
WORKING_DIRECTORY #Working Dir
|
|
|
|
|
DEPENDS #Library being tested
|
|
|
|
|
SOURCE #Single Source File
|
|
|
|
|
)
|
|
|
|
|
set(multiValueArgs
|
|
|
|
|
LIBS #Any Additional libs that are not Qt::Test or the DEPENDS lib
|
|
|
|
|
)
|
|
|
|
|
cmake_parse_arguments(m "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
|
2025-05-09 13:46:04 +00:00
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
|
|
2025-03-28 19:00:43 +00:00
|
|
|
if("${m_NAME}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "create_test, tests require a NAME")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if("${m_WORKING_DIRECTORY}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "create_test, tests require a WORKING_DIRECTORY")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if("${m_SOURCE}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "create_test, tests require a SOURCE")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if("${m_DEPENDS}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "create_test, tests require a DEPENDS")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
add_executable(${m_NAME} ${m_SOURCE})
|
|
|
|
|
target_link_libraries(${m_NAME} ${m_DEPENDS} ${m_LIBS} Qt::Test)
|
2025-08-12 08:34:40 +00:00
|
|
|
if (CMAKE_CXX_BYTE_ORDER STREQUAL "BIG_ENDIAN")
|
|
|
|
|
target_compile_definitions(${m_NAME} PUBLIC WORDS_BIGENDIAN=1)
|
|
|
|
|
endif()
|
2025-03-28 19:00:43 +00:00
|
|
|
add_test(NAME ${m_NAME} COMMAND $<TARGET_FILE:${m_NAME}> WORKING_DIRECTORY ${m_WORKING_DIRECTORY})
|
|
|
|
|
set_tests_properties(${m_NAME} PROPERTIES DEPENDS ${m_DEPENDS})
|
|
|
|
|
set_property(GLOBAL APPEND PROPERTY ${CMAKE_PROJECT_NAME}_tests ${m_NAME})
|
2025-05-09 14:48:41 +00:00
|
|
|
|
2025-05-09 17:10:38 +00:00
|
|
|
if(ENABLE_COVERAGE)
|
|
|
|
|
setup_target_for_coverage_gcovr_xml(
|
|
|
|
|
NAME coverage-${m_NAME}
|
|
|
|
|
EXECUTABLE ${m_NAME}
|
|
|
|
|
BASE_DIRECTORY ${CMAKE_SOURCE_DIR}/src
|
|
|
|
|
EXCLUDE subprojects/* ${CMAKE_BINARY_DIR}/* src/unittest/*
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-03-28 19:00:43 +00:00
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
enable_testing()
|
|
|
|
|
find_package(Qt6 ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test)
|
|
|
|
|
|
2025-04-02 23:31:00 +00:00
|
|
|
add_subdirectory(base)
|
2025-03-28 19:00:43 +00:00
|
|
|
add_subdirectory(common)
|
2025-03-30 14:15:44 +00:00
|
|
|
add_subdirectory(deskflow)
|
2025-03-28 20:34:40 +00:00
|
|
|
add_subdirectory(gui)
|
2025-05-09 14:59:45 +00:00
|
|
|
add_subdirectory(legacytests)
|
2025-04-08 21:44:32 +00:00
|
|
|
add_subdirectory(net)
|
2025-03-31 00:41:00 +00:00
|
|
|
add_subdirectory(platform)
|
2025-04-07 03:34:02 +00:00
|
|
|
add_subdirectory(server)
|
2025-03-28 19:00:43 +00:00
|
|
|
|
|
|
|
|
#make sure to use CI only plugin on Unix
|
|
|
|
|
if (UNIX AND NOT APPLE)
|
|
|
|
|
set(qPA_Platform "QT_QPA_PLATFORM=minimal")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
#Store all test that should be run post build in the property
|
|
|
|
|
get_property(PROJECT_TESTS GLOBAL PROPERTY ${CMAKE_PROJECT_NAME}_tests)
|
|
|
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
|
set(guiApp Deskflow)
|
|
|
|
|
else()
|
|
|
|
|
set(guiApp deskflow)
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-05-09 14:05:07 +00:00
|
|
|
option(SKIP_BUILD_TESTS "Skip build time test" OFF)
|
|
|
|
|
|
|
|
|
|
if(NOT SKIP_BUILD_TESTS)
|
|
|
|
|
add_custom_target(run_tests ALL DEPENDS ${PROJECT_TESTS} ${guiApp})
|
|
|
|
|
add_custom_command (
|
|
|
|
|
TARGET run_tests
|
|
|
|
|
POST_BUILD
|
|
|
|
|
COMMAND ${qPA_Platform} ${CMAKE_CTEST_COMMAND} --test-dir "${CMAKE_BINARY_DIR}/src/unittests" --output-on-failure
|
|
|
|
|
)
|
|
|
|
|
endif()
|