CMake: Add check.cmake to check for errors in commands

RunCMake uses SEND_ERROR instead of FATAL_ERROR in run_cmake(),
which means that the script will continue to run even if a command
fails.

This change adds a check.cmake file and modifies run_suite_command to
ensure that we exit early if a command fails.

Change-Id: I8175ddc91144e3d0dea131857138af7940626208
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Alexandru Croitor
2025-03-27 11:21:33 +01:00
parent 2642218358
commit f1b7f8c83f
2 changed files with 22 additions and 1 deletions

View File

@@ -12,7 +12,19 @@ include(RunCMake)
# Uses prefix set from outside scope.
function(run_suite_command name)
run_cmake_command(${prefix}_${name} ${ARGN})
set(RunCMake_TEST_COMMAND "${ARGN}")
set(RunCMake-check-file "check.cmake")
set(args ${ARGN})
list(JOIN args " " args_str)
set(working_dir "${RunCMake_TEST_COMMAND_WORKING_DIRECTORY}")
message(STATUS "Running command: '${args_str}' in dir: '${working_dir}'")
run_cmake("${prefix}${name}")
# set by the check file above.
if(should_error_out)
message(FATAL_ERROR "Command ${prefix}${name} failed. Exiting early.")
endif()
endfunction()
macro(read_expected_output test file_name)

View File

@@ -0,0 +1,9 @@
# This file is include()d by run_cmake right after it calls execute_process.
# The msg var is set to a non-empty value when the was an error of
# some kind. Record failure with a separate variable in the parent scope,
# so we can FATAL_ERROR at the end.
if(NOT "${msg}" STREQUAL "")
set(should_error_out TRUE PARENT_SCOPE)
else()
set(should_error_out FALSE PARENT_SCOPE)
endif()