diff options
-rw-r--r-- | shell/hush_test/hush-trap/catch.right | 4 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/catch.tests | 20 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/exit.right | 2 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/exit.tests | 3 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/save-ret.right | 2 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/save-ret.tests | 4 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/usage.right | 14 | ||||
-rw-r--r-- | shell/hush_test/hush-trap/usage.tests | 23 |
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 @@ | |||
1 | sending USR2 | ||
2 | caught | ||
3 | sending USR2 | ||
4 | sending 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 | ||
2 | trap ":" USR1 USR2 | ||
3 | |||
4 | hush -c ' | ||
5 | trap "echo caught" USR2 | ||
6 | echo "sending USR2" | ||
7 | kill -USR2 $$ | ||
8 | |||
9 | trap "" USR2 | ||
10 | echo "sending USR2" | ||
11 | kill -USR2 $$ | ||
12 | |||
13 | trap "-" USR2 | ||
14 | echo "sending USR2" | ||
15 | kill -USR2 $$ | ||
16 | |||
17 | echo "not reached" | ||
18 | ' | ||
19 | |||
20 | trap "-" 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 @@ | |||
1 | cow | ||
2 | moo | ||
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 @@ | |||
1 | hush -c 'trap "echo cow" 0' | ||
2 | hush -c 'trap "echo moo" EXIT' | ||
3 | hush -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 @@ | |||
1 | YEAH | ||
2 | 0 | ||
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 | ||
2 | trap "echo YEAH; false" USR1 | ||
3 | kill -USR1 $$ | ||
4 | echo $? | ||
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 | ___ | ||
4 | trap -- 'a' EXIT | ||
5 | trap -- 'a' INT | ||
6 | trap -- 'a' USR1 | ||
7 | trap -- 'a' USR2 | ||
8 | ___ | ||
9 | ___ | ||
10 | trap -- 'a' USR1 | ||
11 | trap -- 'a' USR2 | ||
12 | ___ | ||
13 | ___ | ||
14 | trap -- '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 | ||
2 | echo ___ | ||
3 | trap | ||
4 | |||
5 | # assign some traps | ||
6 | echo ___ | ||
7 | trap "a" EXIT INT USR1 USR2 | ||
8 | |||
9 | # show them all | ||
10 | echo ___ | ||
11 | trap | ||
12 | |||
13 | # clear one | ||
14 | echo ___ | ||
15 | trap 0 INT | ||
16 | echo ___ | ||
17 | trap | ||
18 | |||
19 | # clear another | ||
20 | echo ___ | ||
21 | trap "-" USR1 | ||
22 | echo ___ | ||
23 | trap | ||