CheckCMakeTest.cmake 1.1 KB

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