From a0fe051f8b2bcc919d67f822b674cdfe8cf1274b Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 30 May 2025 12:19:11 -0400 Subject: tests/util: Wrap wait EINTR loop into a helper --- tests/posix/exec_sigmask.sh | 2 +- tests/run.sh | 7 ++----- tests/util.sh | 13 +++++++++++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/tests/posix/exec_sigmask.sh b/tests/posix/exec_sigmask.sh index 4f2c6c9..2907458 100644 --- a/tests/posix/exec_sigmask.sh +++ b/tests/posix/exec_sigmask.sh @@ -13,4 +13,4 @@ mkfifo p1 p2 # Write the `sh` PID to p1, then hang reading p2 until we're killed ! invoke_bfs p1 -exec bash -c 'echo $$ >p1 && read -r _ 128)); then - # Interrupted by signal - continue else debug "${BASH_SOURCE[0]}" $line "${RED}error $ret${RST}" >&$DUPERR exit 1 diff --git a/tests/util.sh b/tests/util.sh index 4bdb86f..e3eca60 100644 --- a/tests/util.sh +++ b/tests/util.sh @@ -202,3 +202,16 @@ nproc() { || echo 1 } 2>/dev/null } + +# Run wait, looping if interrupted +_wait() { + local ret=130 + + # "If wait is interrupted by a signal, the return status will be greater than 128" + while ((ret > 128)); do + ret=0 + wait "$@" || ret=$? + done + + return $ret +} -- cgit v1.2.3