aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/hush_test/hush-trap/catch.right4
-rw-r--r--shell/hush_test/hush-trap/catch.tests20
-rw-r--r--shell/hush_test/hush-trap/exit.right2
-rw-r--r--shell/hush_test/hush-trap/exit.tests3
-rw-r--r--shell/hush_test/hush-trap/save-ret.right2
-rw-r--r--shell/hush_test/hush-trap/save-ret.tests4
-rw-r--r--shell/hush_test/hush-trap/usage.right14
-rw-r--r--shell/hush_test/hush-trap/usage.tests23
8 files changed, 72 insertions, 0 deletions
diff --git a/shell/hush_test/hush-trap/catch.right b/shell/hush_test/hush-trap/catch.right
new file mode 100644
index 000000000..9e34c4c49
--- /dev/null
+++ b/shell/hush_test/hush-trap/catch.right
@@ -0,0 +1,4 @@
1sending USR2
2caught
3sending USR2
4sending USR2
diff --git a/shell/hush_test/hush-trap/catch.tests b/shell/hush_test/hush-trap/catch.tests
new file mode 100644
index 000000000..b1a4ed95b
--- /dev/null
+++ b/shell/hush_test/hush-trap/catch.tests
@@ -0,0 +1,20 @@
1# avoid ugly warnings about signals not being caught
2trap ":" USR1 USR2
3
4hush -c '
5trap "echo caught" USR2
6echo "sending USR2"
7kill -USR2 $$
8
9trap "" USR2
10echo "sending USR2"
11kill -USR2 $$
12
13trap "-" USR2
14echo "sending USR2"
15kill -USR2 $$
16
17echo "not reached"
18'
19
20trap "-" USR1 USR2
diff --git a/shell/hush_test/hush-trap/exit.right b/shell/hush_test/hush-trap/exit.right
new file mode 100644
index 000000000..b4932fb7f
--- /dev/null
+++ b/shell/hush_test/hush-trap/exit.right
@@ -0,0 +1,2 @@
1cow
2moo
diff --git a/shell/hush_test/hush-trap/exit.tests b/shell/hush_test/hush-trap/exit.tests
new file mode 100644
index 000000000..174e74f45
--- /dev/null
+++ b/shell/hush_test/hush-trap/exit.tests
@@ -0,0 +1,3 @@
1hush -c 'trap "echo cow" 0'
2hush -c 'trap "echo moo" EXIT'
3hush -c 'trap "echo no" 0; trap 0'
diff --git a/shell/hush_test/hush-trap/save-ret.right b/shell/hush_test/hush-trap/save-ret.right
new file mode 100644
index 000000000..a3e12ce5e
--- /dev/null
+++ b/shell/hush_test/hush-trap/save-ret.right
@@ -0,0 +1,2 @@
1YEAH
20
diff --git a/shell/hush_test/hush-trap/save-ret.tests b/shell/hush_test/hush-trap/save-ret.tests
new file mode 100644
index 000000000..0786b6d96
--- /dev/null
+++ b/shell/hush_test/hush-trap/save-ret.tests
@@ -0,0 +1,4 @@
1# make sure we do not corrupt $? across traps
2trap "echo YEAH; false" USR1
3kill -USR1 $$
4echo $?
diff --git a/shell/hush_test/hush-trap/usage.right b/shell/hush_test/hush-trap/usage.right
new file mode 100644
index 000000000..c0dbd6c3c
--- /dev/null
+++ b/shell/hush_test/hush-trap/usage.right
@@ -0,0 +1,14 @@
1___
2___
3___
4trap -- 'a' EXIT
5trap -- 'a' INT
6trap -- 'a' USR1
7trap -- 'a' USR2
8___
9___
10trap -- 'a' USR1
11trap -- 'a' USR2
12___
13___
14trap -- 'a' USR2
diff --git a/shell/hush_test/hush-trap/usage.tests b/shell/hush_test/hush-trap/usage.tests
new file mode 100644
index 000000000..d29c6e74a
--- /dev/null
+++ b/shell/hush_test/hush-trap/usage.tests
@@ -0,0 +1,23 @@
1# no output -- default state
2echo ___
3trap
4
5# assign some traps
6echo ___
7trap "a" EXIT INT USR1 USR2
8
9# show them all
10echo ___
11trap
12
13# clear one
14echo ___
15trap 0 INT
16echo ___
17trap
18
19# clear another
20echo ___
21trap "-" USR1
22echo ___
23trap