CheckCMakeTest.cmake 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. get_filename_component(CMakeTests_SRC_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
  2. function(check_cmake_test_single prefix test testfile)
  3. message(STATUS "Test ${prefix}-${test}...")
  4. execute_process(
  5. COMMAND ${CMAKE_COMMAND} -P "${testfile}"
  6. WORKING_DIRECTORY "${CMakeTests_BIN_DIR}"
  7. OUTPUT_VARIABLE stdout
  8. ERROR_VARIABLE stderr
  9. RESULT_VARIABLE result
  10. )
  11. string(REPLACE "\n" "\n out> " out " out> ${stdout}")
  12. string(REPLACE "\n" "\n err> " err " err> ${stderr}")
  13. if(NOT "${result}" STREQUAL "${${test}-RESULT}")
  14. message(FATAL_ERROR
  15. "Test ${test} result is [${result}], not [${${test}-RESULT}].\n"
  16. "Test ${test} output:\n"
  17. "${out}\n"
  18. "${err}")
  19. endif()
  20. if(${test}-STDERR AND NOT "${err}" MATCHES "${${test}-STDERR}")
  21. message(FATAL_ERROR
  22. "Test ${test} stderr does not match\n ${${test}-STDERR}\n"
  23. "Test ${test} output:\n"
  24. "${out}\n"
  25. "${err}")
  26. endif()
  27. endfunction()
  28. function(check_cmake_test prefix)
  29. get_filename_component(CMakeTests_BIN_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
  30. foreach(test ${ARGN})
  31. check_cmake_test_single("${prefix}" "${test}" "${CMakeTests_SRC_DIR}/${prefix}-${test}.cmake")
  32. endforeach()
  33. endfunction()