# Ensure output directory exists get_filename_component(_outdir "${STDOUT}" DIRECTORY) file(MAKE_DIRECTORY "${_outdir}") # Run the program execute_process( COMMAND "${PROG}" --shell "${XML}" INPUT_FILE "${STDIN}" OUTPUT_FILE "${STDOUT}" ERROR_FILE "${STDERR}" RESULT_VARIABLE rc WORKING_DIRECTORY "${WORKDIR}" ) if(NOT rc EQUAL 0) message(STATUS "Program exited with ${rc}") endif() # Diff stdout if(NOT EXISTS "${EXPECTED_STDOUT}") message(FATAL_ERROR "Missing expected stdout file: ${EXPECTED_STDOUT}") endif() execute_process( COMMAND ${CMAKE_COMMAND} -E compare_files "${STDOUT}" "${EXPECTED_STDOUT}" RESULT_VARIABLE cmp_stdout ) if(NOT cmp_stdout EQUAL 0) message(FATAL_ERROR "stdout does not match expected") endif() # Diff stderr if it exists if(EXISTS "${EXPECTED_STDERR}") execute_process( COMMAND ${CMAKE_COMMAND} -E compare_files "${STDERR}" "${EXPECTED_STDERR}" RESULT_VARIABLE cmp_stderr ) if(NOT cmp_stderr EQUAL 0) message(FATAL_ERROR "stderr does not match expected") endif() endif()