diff options
Diffstat (limited to 'release/src/router/busybox/shell/ash_test/ash-signals')
8 files changed, 100 insertions, 0 deletions
diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/reap1.right b/release/src/router/busybox/shell/ash_test/ash-signals/reap1.right new file mode 100644 index 00000000..7326d960 --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/reap1.right @@ -0,0 +1 @@ +Ok diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/reap1.tests b/release/src/router/busybox/shell/ash_test/ash-signals/reap1.tests new file mode 100755 index 00000000..bf1a1f90 --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/reap1.tests @@ -0,0 +1,14 @@ +#!/bin/sh + +# Must not find us alive +{ sleep 2; kill -9 $$; } 2>/dev/null & + +sleep 1 & +PID=$! + +# We must exit the loop in one second. +# We had bug 5304: builtins never waited for exited children +while kill -0 $PID >/dev/null 2>&1; do + true +done +echo Ok diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal1.right b/release/src/router/busybox/shell/ash_test/ash-signals/signal1.right new file mode 100644 index 00000000..cf403ac6 --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal1.right @@ -0,0 +1,20 @@ +got signal +trap -- 'echo got signal' USR1 +sent 1 signal +got signal +wait interrupted +trap -- 'echo got signal' USR1 +sent 2 signal +got signal +wait interrupted +trap -- 'echo got signal' USR1 +sent 3 signal +got signal +wait interrupted +trap -- 'echo got signal' USR1 +sent 4 signal +got signal +wait interrupted +trap -- 'echo got signal' USR1 +sent 5 signal +sleep completed diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal1.tests b/release/src/router/busybox/shell/ash_test/ash-signals/signal1.tests new file mode 100755 index 00000000..098d21fd --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal1.tests @@ -0,0 +1,23 @@ +trap "echo got signal" USR1 + +for try in 1 2 3 4 5; do + kill -USR1 $$ + sleep 0.2 + echo "sent $try signal" +done & + +sleep 2 & + +sleeping=true +while $sleeping; do + trap + if wait %%; then + echo "sleep completed" + sleeping=false + elif [ $? == 127 ]; then + echo "BUG: no processes to wait for?!" + sleeping=false + else + echo "wait interrupted" + fi +done diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal2.right b/release/src/router/busybox/shell/ash_test/ash-signals/signal2.right new file mode 100644 index 00000000..a2af919c --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal2.right @@ -0,0 +1,3 @@ +child sleeps +child exits as expected +parent exits diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal2.tests b/release/src/router/busybox/shell/ash_test/ash-signals/signal2.tests new file mode 100755 index 00000000..df639ca2 --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal2.tests @@ -0,0 +1,18 @@ +#!/bin/sh + +$THIS_SH -c ' +cleanup() { + echo "child exits as expected" + exit +} +trap cleanup HUP +echo "child sleeps" +sleep 1 +echo "BAD exit from child!" +' & + +child=$! +sleep 0.1 # let child install handler first +kill -HUP $child +wait +echo "parent exits" diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal3.right b/release/src/router/busybox/shell/ash_test/ash-signals/signal3.right new file mode 100644 index 00000000..3113ba5c --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal3.right @@ -0,0 +1,4 @@ +child sleeps +child got HUP +child exits +parent exits diff --git a/release/src/router/busybox/shell/ash_test/ash-signals/signal3.tests b/release/src/router/busybox/shell/ash_test/ash-signals/signal3.tests new file mode 100755 index 00000000..b56c2d97 --- /dev/null +++ b/release/src/router/busybox/shell/ash_test/ash-signals/signal3.tests @@ -0,0 +1,17 @@ +#!/bin/sh + +$THIS_SH -c ' +hup() { + echo "child got HUP" +} +trap hup HUP +echo "child sleeps" +sleep 1 +echo "child exits" +' & + +child=$! +sleep 0.1 # let child install handler first +kill -HUP $child +wait +echo "parent exits" |