Some checks failed
sm-rpc / build (Debug, arm-linux-gnueabihf) (push) Successful in 1m34s
sm-rpc / build (Debug, aarch64-linux-gnu) (push) Successful in 2m46s
sm-rpc / build (Debug, host.gcc) (push) Failing after 1m28s
sm-rpc / build (Release, aarch64-linux-gnu) (push) Successful in 2m14s
sm-rpc / build (Release, arm-linux-gnueabihf) (push) Successful in 2m8s
sm-rpc / build (Debug, mipsel-linux-gnu) (push) Successful in 5m35s
sm-rpc / build (Release, host.gcc) (push) Failing after 1m55s
sm-rpc / build (Release, mipsel-linux-gnu) (push) Successful in 7m21s
73 lines
2.4 KiB
CMake
73 lines
2.4 KiB
CMake
# run-and-compare.cmake -- Runs a command and compares its output to an expected value
|
|
|
|
# Copyright (C) 2021 Nathan Moinvaziri
|
|
# Licensed under the Zlib license, see LICENSE.md for details
|
|
|
|
# Required Variables
|
|
# COMMAND - Command to run
|
|
# OUTPUT - Standard output
|
|
# COMPARE - String to compare output against
|
|
|
|
# Optional Variables
|
|
# INPUT - Standard input
|
|
# IGNORE_LINE_ENDINGS - Ignore line endings when comparing output
|
|
|
|
if(NOT DEFINED OUTPUT OR NOT DEFINED COMPARE OR NOT DEFINED COMMAND)
|
|
message(FATAL_ERROR "Run and compare arguments missing")
|
|
endif()
|
|
|
|
# Ensure directory exists for output files
|
|
get_filename_component(OUTPUT_DIR "${OUTPUT}" DIRECTORY)
|
|
file(MAKE_DIRECTORY "${OUTPUT_DIR}")
|
|
|
|
if(INPUT)
|
|
# Run command with stdin input and redirect stdout to output
|
|
execute_process(COMMAND ${CMAKE_COMMAND}
|
|
"-DCOMMAND=${COMMAND}"
|
|
-DINPUT=${INPUT}
|
|
-DOUTPUT=${OUTPUT}
|
|
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
|
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
|
RESULT_VARIABLE CMD_RESULT)
|
|
else()
|
|
# Run command and redirect stdout to output
|
|
execute_process(COMMAND ${CMAKE_COMMAND}
|
|
"-DCOMMAND=${COMMAND}"
|
|
-DOUTPUT=${OUTPUT}
|
|
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
|
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
|
RESULT_VARIABLE CMD_RESULT)
|
|
endif()
|
|
|
|
if(CMD_RESULT)
|
|
message(FATAL_ERROR "Run before compare failed: ${CMD_RESULT}")
|
|
endif()
|
|
|
|
# Use configure_file to normalize line-endings
|
|
if(IGNORE_LINE_ENDINGS)
|
|
# Rewrite files with normalized line endings to temporary directory
|
|
get_filename_component(COMPARE_NAME ${COMPARE} NAME)
|
|
set(COMPARE_TEMP ${CMAKE_CURRENT_BINARY_DIR}/Testing/Temporary/${COMPARE_NAME}.cmp)
|
|
configure_file(${COMPARE} ${COMPARE_TEMP} NEWLINE_STYLE LF)
|
|
set(COMPARE ${COMPARE_TEMP})
|
|
|
|
get_filename_component(OUTPUT_NAME ${OUTPUT} NAME)
|
|
set(OUTPUT_TEMP ${CMAKE_CURRENT_BINARY_DIR}/Testing/Temporary/${OUTPUT_NAME}.cmp)
|
|
configure_file(${OUTPUT} ${OUTPUT_TEMP} NEWLINE_STYLE LF)
|
|
set(OUTPUT ${OUTPUT_TEMP})
|
|
endif()
|
|
|
|
# Compare that output is equal to specified file
|
|
execute_process(COMMAND ${CMAKE_COMMAND}
|
|
-E compare_files ${COMPARE} ${OUTPUT}
|
|
RESULT_VARIABLE CMD_RESULT)
|
|
|
|
# Delete temporary files used to normalize line-endings
|
|
if(IGNORE_LINE_ENDINGS)
|
|
file(REMOVE ${COMPARE} ${OUTPUT})
|
|
endif()
|
|
|
|
if(CMD_RESULT)
|
|
message(FATAL_ERROR "Run compare failed: ${CMD_RESULT}")
|
|
endif()
|