summaryrefslogtreecommitdiff
path: root/shell/hush_test
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-10-01 22:28:03 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-10-01 22:28:03 +0200
commit04b46bced991f802a17c0fc43c8f8448e4eb2c8f (patch)
treefa9f4f151950d21aca3bbf9a3c4bfa01853976cc /shell/hush_test
parent0dd8e45d42a420a570e7cada80a5fb1ef2052054 (diff)
downloadbusybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.tar.gz
busybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.tar.bz2
busybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.zip
hush: 'return' should have effect earlier
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r--shell/hush_test/hush-trap/return_in_trap1.right4
-rwxr-xr-xshell/hush_test/hush-trap/return_in_trap1.tests18
2 files changed, 22 insertions, 0 deletions
diff --git a/shell/hush_test/hush-trap/return_in_trap1.right b/shell/hush_test/hush-trap/return_in_trap1.right
new file mode 100644
index 000000000..a6e637885
--- /dev/null
+++ b/shell/hush_test/hush-trap/return_in_trap1.right
@@ -0,0 +1,4 @@
1a:2
2b:0
3Trap
4d:3
diff --git a/shell/hush_test/hush-trap/return_in_trap1.tests b/shell/hush_test/hush-trap/return_in_trap1.tests
new file mode 100755
index 000000000..f2498024f
--- /dev/null
+++ b/shell/hush_test/hush-trap/return_in_trap1.tests
@@ -0,0 +1,18 @@
1a() {
2 (exit 2)
3 echo a:$?
4 (kill -s USR1 $$; echo b:$?; exit 3)
5 echo c:$? # does not execute
6 (exit 4)
7}
8
9trap "echo Trap; return" USR1
10a
11
12echo d:$?
13# It's debatable what is the correct value above.
14# Does 'return' in trap sees $? == 2 or $? == 3?
15# IOW: after (kill..), does shell first wait for its completion
16# and sets $?, then checks pending signals and runs a trap handler,
17# or does it first checks pending signals and runs handler?
18# hush does the former, and prints 3.