Files
GmSSL/cmake/tool_helpers.cmake
2026-06-20 23:10:17 +08:00

68 lines
2.1 KiB
CMake

set(GMSSL_BIN bin/gmssl)
function(gmssl_run)
execute_process(
COMMAND ${GMSSL_BIN} ${ARGN}
RESULT_VARIABLE TEST_RESULT
ERROR_VARIABLE TEST_STDERR
OUTPUT_VARIABLE TEST_STDOUT
)
if(NOT TEST_RESULT EQUAL 0)
message(FATAL_ERROR "command failed: ${GMSSL_BIN} ${ARGN}\nstderr: ${TEST_STDERR}\nstdout: ${TEST_STDOUT}")
endif()
endfunction()
function(gmssl_run_capture out_var)
execute_process(
COMMAND ${GMSSL_BIN} ${ARGN}
RESULT_VARIABLE TEST_RESULT
ERROR_VARIABLE TEST_STDERR
OUTPUT_VARIABLE TEST_STDOUT
)
if(NOT TEST_RESULT EQUAL 0)
message(FATAL_ERROR "command failed: ${GMSSL_BIN} ${ARGN}\nstderr: ${TEST_STDERR}\nstdout: ${TEST_STDOUT}")
endif()
set(${out_var} "${TEST_STDOUT}" PARENT_SCOPE)
endfunction()
function(gmssl_expect_stdout expected)
gmssl_run_capture(TEST_STDOUT ${ARGN})
if(NOT TEST_STDOUT STREQUAL "${expected}")
message(FATAL_ERROR "unexpected stdout for ${GMSSL_BIN} ${ARGN}\nexpected: ${expected}\nactual: ${TEST_STDOUT}")
endif()
endfunction()
function(gmssl_require_file file)
if(NOT EXISTS "${file}")
message(FATAL_ERROR "generated file does not exist: ${file}")
endif()
endfunction()
function(gmssl_files_equal expected actual)
gmssl_require_file("${expected}")
gmssl_require_file("${actual}")
file(SHA256 "${expected}" EXPECTED_HASH)
file(SHA256 "${actual}" ACTUAL_HASH)
if(NOT EXPECTED_HASH STREQUAL ACTUAL_HASH)
message(FATAL_ERROR "file mismatch: ${expected} ${actual}")
endif()
endfunction()
function(gmssl_expect_file_hex file expected_hex)
gmssl_require_file("${file}")
file(READ "${file}" ACTUAL_HEX HEX)
string(TOLOWER "${ACTUAL_HEX}" ACTUAL_HEX)
string(TOLOWER "${expected_hex}" EXPECTED_HEX)
if(NOT ACTUAL_HEX STREQUAL EXPECTED_HEX)
message(FATAL_ERROR "unexpected hex in ${file}\nexpected: ${EXPECTED_HEX}\nactual: ${ACTUAL_HEX}")
endif()
endfunction()
function(gmssl_expect_file_text file expected_text)
gmssl_require_file("${file}")
file(READ "${file}" ACTUAL_TEXT)
if(NOT ACTUAL_TEXT STREQUAL "${expected_text}")
message(FATAL_ERROR "unexpected text in ${file}\nexpected: ${expected_text}\nactual: ${ACTUAL_TEXT}")
endif()
endfunction()