1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- option(BUILD_TESTING off)
- include(CMakeParseArguments)
- enable_testing()
- if(NOT TARGET check)
- add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR})
- endif()
- if(NOT TARGET tests)
- add_custom_target(tests COMMENT "Build all tests.")
- add_dependencies(check tests)
- endif()
- function(bcm_mark_as_test)
- foreach(TEST_TARGET ${ARGN})
- if (NOT BUILD_TESTING)
- set_target_properties(${TEST_TARGET}
- PROPERTIES EXCLUDE_FROM_ALL TRUE
- )
- endif()
- add_dependencies(tests ${TEST_TARGET})
- endforeach()
- endfunction(bcm_mark_as_test)
- function(bcm_add_test)
- set(options COMPILE_ONLY WILL_FAIL)
- set(oneValueArgs NAME)
- set(multiValueArgs SOURCES CONTENT)
- cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
- # TODO: Check if name exists
- set(SOURCES ${PARSE_SOURCES})
- if(PARSE_CONTENT)
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generated-${PARSE_NAME}.cpp "${PARSE_CONTENT}")
- set(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated-${PARSE_NAME}.cpp)
- endif()
- if(PARSE_COMPILE_ONLY)
- if(PARSE_WILL_FAIL)
- add_library(_${PARSE_NAME}_TEST_FAIL STATIC EXCLUDE_FROM_ALL ${SOURCES})
- add_custom_target(${PARSE_NAME}
- COMMAND ${CMAKE_COMMAND} --build . --target _${PARSE_NAME}_TEST_FAIL --config $<CONFIGURATION>
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
- add_test(NAME ${PARSE_NAME}
- COMMAND ${CMAKE_COMMAND} --build . --target _${PARSE_NAME}_TEST_FAIL --config $<CONFIGURATION>
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
- set_tests_properties(${PARSE_NAME} PROPERTIES WILL_FAIL TRUE)
- else()
- add_library(${PARSE_NAME} STATIC ${SOURCES})
- bcm_mark_as_test(${PARSE_NAME})
- endif()
- else()
- add_executable (${PARSE_NAME} ${SOURCES})
- bcm_mark_as_test(${PARSE_NAME})
- if(WIN32)
- add_test(NAME ${PARSE_NAME} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${PARSE_NAME}${CMAKE_EXECUTABLE_SUFFIX})
- else()
- add_test(NAME ${PARSE_NAME} COMMAND ${PARSE_NAME})
- endif()
- if(WILL_FAIL)
- set_tests_properties(${PARSE_NAME} PROPERTIES WILL_FAIL TRUE)
- endif()
- endif()
- endfunction(bcm_add_test)
- function(bcm_test_header)
- set(options STATIC)
- set(oneValueArgs NAME HEADER)
- set(multiValueArgs)
- cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
- if(PARSE_STATIC)
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${PARSE_NAME}.cpp
- "#include <${PARSE_HEADER}>\nint main() {}\n"
- )
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/header-static-include-${PARSE_NAME}.cpp
- "#include <${PARSE_HEADER}>\n"
- )
- bcm_add_test(NAME header-static-include-${PARSE_NAME} SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${PARSE_NAME}.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/header-static-include-${PARSE_NAME}.cpp
- )
- else()
- bcm_add_test(NAME header-include-${PARSE_NAME} CONTENT
- "#include <${PARSE_HEADER}>\nint main() {}\n"
- )
- endif()
- endfunction(bcm_test_header)
|