diff options
author | Denys Vlasenko | 2017-07-14 13:36:48 +0200 |
---|---|---|
committer | Denys Vlasenko | 2017-07-14 13:36:48 +0200 |
commit | 9fda609a60506f4c1f73f0034cafd2b3434f4df3 (patch) | |
tree | d3ea98fe9f47577162a884ec6cd1a6b233e72bc4 /shell/hush_test | |
parent | 75e90b15482184db83f03c67b53d4220888c6c9d (diff) | |
download | busybox-9fda609a60506f4c1f73f0034cafd2b3434f4df3.zip busybox-9fda609a60506f4c1f73f0034cafd2b3434f4df3.tar.gz |
hush: add support for "set -e"
function old new delta
run_list 978 1046 +68
o_opt_strings 24 32 +8
reset_traps_to_defaults 136 142 +6
pick_sighandler 57 60 +3
packed_usage 31772 31770 -2
hush_main 983 961 -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/2 up/down: 85/-24) Total: 61 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-misc/errexit1.right | 1 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/errexit1.tests | 5 | ||||
-rw-r--r-- | shell/hush_test/hush-signals/signal8.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-signals/signal8.tests | 18 | ||||
-rw-r--r-- | shell/hush_test/hush-signals/signal9.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-signals/signal9.tests | 21 |
6 files changed, 51 insertions, 0 deletions
diff --git a/shell/hush_test/hush-misc/errexit1.right b/shell/hush_test/hush-misc/errexit1.right new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/shell/hush_test/hush-misc/errexit1.right @@ -0,0 +1 @@ +OK diff --git a/shell/hush_test/hush-misc/errexit1.tests b/shell/hush_test/hush-misc/errexit1.tests new file mode 100755 index 0000000..7b4a156 --- /dev/null +++ b/shell/hush_test/hush-misc/errexit1.tests @@ -0,0 +1,5 @@ +set -e +(true) +echo OK +(false) +echo FAIL diff --git a/shell/hush_test/hush-signals/signal8.right b/shell/hush_test/hush-signals/signal8.right new file mode 100644 index 0000000..39572f3 --- /dev/null +++ b/shell/hush_test/hush-signals/signal8.right @@ -0,0 +1,3 @@ +Removing traps +End of exit_func +Done: 0 diff --git a/shell/hush_test/hush-signals/signal8.tests b/shell/hush_test/hush-signals/signal8.tests new file mode 100755 index 0000000..731af74 --- /dev/null +++ b/shell/hush_test/hush-signals/signal8.tests @@ -0,0 +1,18 @@ +"$THIS_SH" -c ' +exit_func() { + echo "Removing traps" + trap - EXIT TERM INT + echo "End of exit_func" +} +set -e +trap exit_func EXIT TERM INT +sleep 2 +exit 77 +' & + +sleep 1 +# BUG: ash kills -PGRP, but in non-interactive shell we do not create pgrps! +# In this case, bash kills by PID, not PGRP. +kill -TERM %1 +wait +echo Done: $? diff --git a/shell/hush_test/hush-signals/signal9.right b/shell/hush_test/hush-signals/signal9.right new file mode 100644 index 0000000..39572f3 --- /dev/null +++ b/shell/hush_test/hush-signals/signal9.right @@ -0,0 +1,3 @@ +Removing traps +End of exit_func +Done: 0 diff --git a/shell/hush_test/hush-signals/signal9.tests b/shell/hush_test/hush-signals/signal9.tests new file mode 100755 index 0000000..18e7101 --- /dev/null +++ b/shell/hush_test/hush-signals/signal9.tests @@ -0,0 +1,21 @@ +# Note: the inner script is a test which checks for a different bug +# (ordering between INT handler and exit on "set -e"), +# but so far I did not figure out how to simulate it non-interactively. + +"$THIS_SH" -c ' +exit_func() { + echo "Removing traps" + trap - EXIT TERM INT + echo "End of exit_func" +} +set -e +trap exit_func EXIT TERM INT +sleep 2 +exit 77 +' & + +child=$! +sleep 1 +kill -TERM $child +wait +echo Done: $? |