cmake/RenderTestRunner.cmake (31 lines of code) (raw):
find_program(DIFF_EXECUTABLE diff)
if(NOT DIFF_EXECUTABLE)
message(FATAL_ERROR "WARNING: `diff` executable not found")
endif()
set(_rtr_base_dir "${CMAKE_CURRENT_LIST_DIR}")
function(render_test_runner)
set(_options)
set(_one_value_args TARGET)
set(_multi_value_args)
cmake_parse_arguments(_rtr "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN})
if(NOT (_rtr_TARGET AND TARGET ${_rtr_TARGET}))
message(FATAL_ERROR "TARGET option is missed or invalid")
endif()
foreach(output "output" "error")
foreach(kind "" "_flowid")
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_rtr_TARGET}${kind}.expected.${output}")
message(FATAL_ERROR "Missed ${_rtr_TARGET}${kind}.expected.${output} in ${CMAKE_CURRENT_SOURCE_DIR}")
endif()
set(_rtr${kind}_expected_${output} "${CMAKE_CURRENT_SOURCE_DIR}/${_rtr_TARGET}${kind}.expected.${output}")
endforeach()
endforeach()
configure_file("${_rtr_base_dir}/run_test.cmake.in" "${_rtr_TARGET}.cmake" @ONLY)
add_test(
NAME ${_rtr_TARGET}
COMMAND ${CMAKE_COMMAND} -P "${_rtr_TARGET}.cmake"
)
add_test(
NAME ${_rtr_TARGET}_flowid
COMMAND ${CMAKE_COMMAND} -DPRETEND_TEAMCITY=ON -P "${_rtr_TARGET}.cmake"
)
endfunction()