summaryrefslogtreecommitdiff
path: root/release/src/router/busybox/shell/ash_test/ash-signals
diff options
context:
space:
mode:
Diffstat (limited to 'release/src/router/busybox/shell/ash_test/ash-signals')
-rw-r--r--release/src/router/busybox/shell/ash_test/ash-signals/reap1.right1
-rwxr-xr-xrelease/src/router/busybox/shell/ash_test/ash-signals/reap1.tests14
-rw-r--r--release/src/router/busybox/shell/ash_test/ash-signals/signal1.right20
-rwxr-xr-xrelease/src/router/busybox/shell/ash_test/ash-signals/signal1.tests23
-rw-r--r--release/src/router/busybox/shell/ash_test/ash-signals/signal2.right3
-rwxr-xr-xrelease/src/router/busybox/shell/ash_test/ash-signals/signal2.tests18
-rw-r--r--release/src/router/busybox/shell/ash_test/ash-signals/signal3.right4
-rwxr-xr-xrelease/src/router/busybox/shell/ash_test/ash-signals/signal3.tests17
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"