This repository has been archived on 2023-10-28. You can view files and clone it, but cannot push or open issues or pull requests.
frostbite/BoostTestHelpers.cmake
2020-02-06 00:23:46 +00:00

20 lines
879 B
CMake

function(add_boost_test SOURCE_FILE_NAME DEPENDENCY_LIB1 DEPENDENCY_LIB2)
get_filename_component(TEST_EXECUTABLE_NAME ${SOURCE_FILE_NAME} NAME_WE)
add_executable(${TEST_EXECUTABLE_NAME} ${SOURCE_FILE_NAME})
target_link_libraries(${TEST_EXECUTABLE_NAME}
${DEPENDENCY_LIB1} ${DEPENDENCY_LIB2} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
file(READ "${SOURCE_FILE_NAME}" SOURCE_FILE_CONTENTS)
string(REGEX MATCHALL "BOOST_AUTO_TEST_CASE\\( *([A-Za-z_0-9]+) *\\)"
FOUND_TESTS ${SOURCE_FILE_CONTENTS})
foreach(HIT ${FOUND_TESTS})
string(REGEX REPLACE ".*\\( *([A-Za-z_0-9]+) *\\).*" "\\1" TEST_NAME ${HIT})
add_test(NAME "${TEST_EXECUTABLE_NAME}.${TEST_NAME}"
COMMAND ${TEST_EXECUTABLE_NAME}
--run_test=${TEST_NAME} --catch_system_error=yes)
endforeach()
endfunction()