summaryrefslogtreecommitdiff
path: root/shell/ash_test
diff options
context:
space:
mode:
authorDenys Vlasenko2016-10-01 22:36:14 +0200
committerDenys Vlasenko2016-10-01 22:36:14 +0200
commit3ed7e2749a3f9fd315d8f46a3b0a25ff10caf726 (patch)
treefccfb21b43b61d48da4832a6dc319e366e6127e7 /shell/ash_test
parent04b46bced991f802a17c0fc43c8f8448e4eb2c8f (diff)
downloadbusybox-3ed7e2749a3f9fd315d8f46a3b0a25ff10caf726.zip
busybox-3ed7e2749a3f9fd315d8f46a3b0a25ff10caf726.tar.gz
ash testsuite: add return_in_trap1.tests
Currently it fails Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash_test')
-rw-r--r--shell/ash_test/ash-signals/return_in_trap1.right4
-rwxr-xr-xshell/ash_test/ash-signals/return_in_trap1.tests18
2 files changed, 22 insertions, 0 deletions
diff --git a/shell/ash_test/ash-signals/return_in_trap1.right b/shell/ash_test/ash-signals/return_in_trap1.right
new file mode 100644
index 0000000..a6e6378
--- /dev/null
+++ b/shell/ash_test/ash-signals/return_in_trap1.right
@@ -0,0 +1,4 @@
+a:2
+b:0
+Trap
+d:3
diff --git a/shell/ash_test/ash-signals/return_in_trap1.tests b/shell/ash_test/ash-signals/return_in_trap1.tests
new file mode 100755
index 0000000..f249802
--- /dev/null
+++ b/shell/ash_test/ash-signals/return_in_trap1.tests
@@ -0,0 +1,18 @@
+a() {
+ (exit 2)
+ echo a:$?
+ (kill -s USR1 $$; echo b:$?; exit 3)
+ echo c:$? # does not execute
+ (exit 4)
+}
+
+trap "echo Trap; return" USR1
+a
+
+echo d:$?
+# It's debatable what is the correct value above.
+# Does 'return' in trap sees $? == 2 or $? == 3?
+# IOW: after (kill..), does shell first wait for its completion
+# and sets $?, then checks pending signals and runs a trap handler,
+# or does it first checks pending signals and runs handler?
+# hush does the former, and prints 3.