file(GLOB_RECURSE TEST_CASE_SOURCES t*/*.cc t*/*.c t*/src/*.c) file(GLOB_RECURSE TEST_CASE_CONFIGS t*/.clang-uml) file(GLOB_RECURSE TEST_CONFIG_YMLS test_config_data/*.yml test_compilation_database_data/*.yml test_compilation_database_data/*.json) set(TEST_CASES_REQUIRING_CXX20 t00056 t00058 t00059 t00065) set(CLANG_UML_TEST_LIBRARIES clang-umllib ${YAML_CPP_LIBRARIES} ${LIBTOOLING_LIBS} Threads::Threads) if(MSVC) list(APPEND CLANG_UML_TEST_LIBRARIES "Version.lib") endif(MSVC) list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_std_20 SUPPORTS_CXX_STD_20) if(SUPPORTS_CXX_STD_20 EQUAL -1 OR ${LLVM_PACKAGE_VERSION} VERSION_LESS "14.0") set(ENABLE_CXX_STD_20_TEST_CASES 0) foreach(CXX20_TC ${TEST_CASES_REQUIRING_CXX20}) list(FILTER TEST_CASE_SOURCES EXCLUDE REGEX ".*${CXX20_TC}.*") list(FILTER TEST_CASE_CONFIGS EXCLUDE REGEX ".*${CXX20_TC}.*") endforeach() else() set(ENABLE_CXX_STD_20_TEST_CASES 1) endif() set(TEST_CASES test_util test_model test_cases test_compilation_database test_decorator_parser test_config test_cli_handler test_filters test_thread_pool_executor test_query_driver_output_extractor) foreach(TEST_NAME ${TEST_CASES}) add_executable(${TEST_NAME} ${TEST_NAME}.cc $<$:${TEST_CASE_SOURCES}> catch.h) target_compile_features(${TEST_NAME} PRIVATE $) target_compile_definitions(${TEST_NAME} PRIVATE $<$:ENABLE_CXX_STD_20_TEST_CASES>) target_compile_options(${TEST_NAME} PRIVATE $<$: $<$,$>: -Wno-unused-parameter -Wno-unused-private-field -Wno-unused-variable -Wno-attributes -Wno-nonnull -Wno-deprecated-enum-enum-conversion> $<$:/W1 /bigobj /wd4624>>) target_link_libraries(${TEST_NAME} PRIVATE ${CLANG_UML_TEST_LIBRARIES}) endforeach() foreach(TEST_CASE_CONFIG ${TEST_CASE_CONFIGS}) file(RELATIVE_PATH TEST_CASE_CONFIG_RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${TEST_CASE_CONFIG}) message(DEBUG ${TEST_CASE_CONFIG_RELATIVE}) configure_file( ${TEST_CASE_CONFIG_RELATIVE} ${TEST_CASE_CONFIG_RELATIVE} COPYONLY) endforeach() foreach(TEST_CONFIG_YML ${TEST_CONFIG_YMLS}) file(RELATIVE_PATH TEST_CONFIG_YML_RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${TEST_CONFIG_YML}) message(DEBUG ${TEST_CONFIG_YML_RELATIVE}) configure_file( ${TEST_CONFIG_YML_RELATIVE} ${TEST_CONFIG_YML_RELATIVE} COPYONLY) endforeach() foreach(TEST_NAME ${TEST_CASES}) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) endforeach()