From: Paul Smith Date: Sun, 6 Nov 2022 19:14:28 +0000 (-0500) Subject: [SV 63315] tests: Simplify TERM signaling X-Git-Tag: 4.4.0.90~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=deb4ff272a589d74950e120b800a35e212261f75;p=thirdparty%2Fmake.git [SV 63315] tests: Simplify TERM signaling Tests that try to kill the make process were not behaving as expected on OpenBSD: the signal was sent from make to its children but the sleep didn't die. Something odd about the way the shell treats TERM. To reduce platform dependencies add "term" to the helper tool and run that instead of kill / sleep. * tests/thelp.pl: Add a new operation "term" that takes a PID. * tests/scripts/features/output-sync: Use it. * tests/scripts/features/temp_stdin: Ditto. --- diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index 13a54ca0..40546994 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -360,7 +360,7 @@ use POSIX (); # file. run_make_test(q! pid:=$(shell echo $$PPID) -all:; @kill -TERM $(pid) && sleep 16 +all:; @#HELPER# term $(pid) sleep 10 !, '-O -j2', '/#MAKE#: \*\*\* \[#MAKEFILE#:3: all] Terminated/', POSIX::SIGTERM); } diff --git a/tests/scripts/features/temp_stdin b/tests/scripts/features/temp_stdin index b06df53e..c01d627c 100644 --- a/tests/scripts/features/temp_stdin +++ b/tests/scripts/features/temp_stdin @@ -71,7 +71,7 @@ run_make_test(q! include bye.mk pid:=$(shell echo $$PPID) all:; -bye.mk: force; @kill -TERM $(pid) && sleep 16 +bye.mk: force; @#HELPER# term $(pid) sleep 10 force: !, '-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM); } diff --git a/tests/thelp.pl b/tests/thelp.pl index 993339cb..c243bcb8 100755 --- a/tests/thelp.pl +++ b/tests/thelp.pl @@ -16,6 +16,7 @@ # wait : wait for a file named to exist # tmout : Change the timeout for waiting. Default is 4 seconds. # sleep : Sleep for seconds then echo +# term : send SIGTERM to PID # fail : echo to stdout then exit with error code err # # If given -q only the "out" command generates output. @@ -95,6 +96,12 @@ sub op { return 1; } + if ($op eq 'term') { + print "term $nm\n"; + kill('TERM', $nm); + return 1; + } + if ($op eq 'fail') { print "fail $nm\n"; exit($nm);