From 8d2191c6aedf60c29dc0a6ee8c452fee7e460ee7 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 24 Jul 2017 19:42:46 +0200 Subject: ash: copy three tests from hush_test/hush-signals/* Signed-off-by: Denys Vlasenko --- shell/ash_test/ash-signals/catch.right | 5 +++++ shell/ash_test/ash-signals/catch.tests | 20 ++++++++++++++++++++ shell/ash_test/ash-signals/signal_read2.right | 2 ++ shell/ash_test/ash-signals/signal_read2.tests | 7 +++++++ shell/ash_test/ash-signals/subshell.right | 21 +++++++++++++++++++++ shell/ash_test/ash-signals/subshell.tests | 19 +++++++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 shell/ash_test/ash-signals/catch.right create mode 100755 shell/ash_test/ash-signals/catch.tests create mode 100644 shell/ash_test/ash-signals/signal_read2.right create mode 100755 shell/ash_test/ash-signals/signal_read2.tests create mode 100644 shell/ash_test/ash-signals/subshell.right create mode 100755 shell/ash_test/ash-signals/subshell.tests (limited to 'shell/ash_test/ash-signals') diff --git a/shell/ash_test/ash-signals/catch.right b/shell/ash_test/ash-signals/catch.right new file mode 100644 index 0000000..68530c6 --- /dev/null +++ b/shell/ash_test/ash-signals/catch.right @@ -0,0 +1,5 @@ +sending USR2 +caught +sending USR2 +sending USR2 +User defined signal 2 diff --git a/shell/ash_test/ash-signals/catch.tests b/shell/ash_test/ash-signals/catch.tests new file mode 100755 index 0000000..d2a21d1 --- /dev/null +++ b/shell/ash_test/ash-signals/catch.tests @@ -0,0 +1,20 @@ +# avoid ugly warnings about signals not being caught +trap ":" USR1 USR2 + +"$THIS_SH" -c ' +trap "echo caught" USR2 +echo "sending USR2" +kill -USR2 $$ + +trap "" USR2 +echo "sending USR2" +kill -USR2 $$ + +trap "-" USR2 +echo "sending USR2" +kill -USR2 $$ + +echo "not reached" +' + +trap "-" USR1 USR2 diff --git a/shell/ash_test/ash-signals/signal_read2.right b/shell/ash_test/ash-signals/signal_read2.right new file mode 100644 index 0000000..87d8da3 --- /dev/null +++ b/shell/ash_test/ash-signals/signal_read2.right @@ -0,0 +1,2 @@ +Hangup +Done:129 diff --git a/shell/ash_test/ash-signals/signal_read2.tests b/shell/ash_test/ash-signals/signal_read2.tests new file mode 100755 index 0000000..eab5b9b --- /dev/null +++ b/shell/ash_test/ash-signals/signal_read2.tests @@ -0,0 +1,7 @@ +$THIS_SH -c ' +(sleep 1; kill -HUP $$) & +while true; do + read ignored +done +' +echo "Done:$?" diff --git a/shell/ash_test/ash-signals/subshell.right b/shell/ash_test/ash-signals/subshell.right new file mode 100644 index 0000000..248fcc4 --- /dev/null +++ b/shell/ash_test/ash-signals/subshell.right @@ -0,0 +1,21 @@ +trap -- '' HUP +trap -- '' QUIT +trap -- '' SYS +Ok +trap -- '' HUP +trap -- '' QUIT +trap -- '' SYS +Ok +trap -- '' HUP +trap -- '' QUIT +trap -- '' SYS +Ok +trap -- '' HUP +trap -- '' QUIT +trap -- '' SYS +Ok +trap -- '' HUP +trap -- '' QUIT +trap -- '' SYS +Terminated +Done diff --git a/shell/ash_test/ash-signals/subshell.tests b/shell/ash_test/ash-signals/subshell.tests new file mode 100755 index 0000000..d877f2b --- /dev/null +++ b/shell/ash_test/ash-signals/subshell.tests @@ -0,0 +1,19 @@ +# Non-empty traps should be reset in subshell + +# HUP is special in interactive shells +trap '' HUP +# QUIT is always special +trap '' QUIT +# SYS is not special +trap '' SYS +# WINCH is harmless +trap 'bad: caught WINCH' WINCH +# With TERM we'll check whether it is reset +trap 'bad: caught TERM' TERM + +(trap; "$THIS_SH" -c 'kill -HUP $PPID'; echo Ok) +(trap; "$THIS_SH" -c 'kill -QUIT $PPID'; echo Ok) +(trap; "$THIS_SH" -c 'kill -SYS $PPID'; echo Ok) +(trap; "$THIS_SH" -c 'kill -WINCH $PPID'; echo Ok) +(trap; "$THIS_SH" -c 'kill -TERM $PPID'; echo Bad: TERM is not reset) +echo Done -- cgit v1.1