summaryrefslogtreecommitdiffhomepage
path: root/shell/hush_test
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-09-25 14:21:06 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-09-25 14:21:06 +0200
commit67f7186403dec3f61f6ea9e9a3f555bd0b0541bc (patch)
tree2cc885ab0edebf17070b88aaaf56899814ed4744 /shell/hush_test
parent4ea0ca81934ad62887632fa53d093b0048ea7e03 (diff)
hush: do not reset to default "" traps in subshell
function old new delta reset_traps_to_defaults 164 211 +47 builtin_umask 123 121 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r--shell/hush_test/hush-trap/subshell.right6
-rwxr-xr-xshell/hush_test/hush-trap/subshell.tests20
2 files changed, 26 insertions, 0 deletions
diff --git a/shell/hush_test/hush-trap/subshell.right b/shell/hush_test/hush-trap/subshell.right
new file mode 100644
index 000000000..0d20ed4e9
--- /dev/null
+++ b/shell/hush_test/hush-trap/subshell.right
@@ -0,0 +1,6 @@
+Ok
+Ok
+Ok
+Ok
+TERM
+Done
diff --git a/shell/hush_test/hush-trap/subshell.tests b/shell/hush_test/hush-trap/subshell.tests
new file mode 100755
index 000000000..b5d6094d6
--- /dev/null
+++ b/shell/hush_test/hush-trap/subshell.tests
@@ -0,0 +1,20 @@
+# 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
+
+# using bash, becuase we don't have $PPID (yet)
+(bash -c 'kill -HUP $PPID'; echo Ok)
+(bash -c 'kill -QUIT $PPID'; echo Ok)
+(bash -c 'kill -SYS $PPID'; echo Ok)
+(bash -c 'kill -WINCH $PPID'; echo Ok)
+(bash -c 'kill -TERM $PPID'; echo Bad: TERM is not reset)
+echo Done