From 0d329713757dfc0aea9b28a5f19e38302c2b93d9 Mon Sep 17 00:00:00 2001 From: Michael Orlov Date: Fri, 26 May 2023 10:38:06 -0700 Subject: [PATCH] Add extra checks in execute_and_wait_until_completion(..) (#1346) - Add check if process was terminated by the signal or really exited Signed-off-by: Michael Orlov (cherry picked from commit 1215440903c61e0bcbefcf8779b58c86fe31daa6) --- .../process_execution_helpers_unix.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rosbag2_test_common/include/rosbag2_test_common/process_execution_helpers_unix.hpp b/rosbag2_test_common/include/rosbag2_test_common/process_execution_helpers_unix.hpp index 3cad97d6bb..1076526953 100644 --- a/rosbag2_test_common/include/rosbag2_test_common/process_execution_helpers_unix.hpp +++ b/rosbag2_test_common/include/rosbag2_test_common/process_execution_helpers_unix.hpp @@ -59,13 +59,17 @@ int execute_and_wait_until_completion(const std::string & command, const std::st if (ret_ch_dir != 0) { return EXIT_FAILURE; } - auto exitcode = std::system(command.c_str()); + auto status = std::system(command.c_str()); ret_ch_dir = chdir(previous_dir); if (ret_ch_dir != 0) { return EXIT_FAILURE; } - - return WEXITSTATUS(exitcode); + EXPECT_EQ(WIFEXITED(status), true) << "status = " << status; + if (WIFSIGNALED(status)) { + // Process terminated by signal + return WTERMSIG(status); + } + return WEXITSTATUS(status); } ProcessHandle start_execution(const std::string & command)