Bash-4.3 distribution sources and documentation
[platform/upstream/bash.git] / tests / trap.tests
index 66337ba..5d8b06c 100644 (file)
@@ -12,7 +12,7 @@ trap
 
 func()
 {
-       trap 'echo [$LINENO] funcdebug' DEBUG
+       trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
        echo funcdebug line
 }
 
@@ -25,6 +25,16 @@ func
 
 trap
 
+trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG
+func2()
+{
+       echo func2debug line
+}
+declare -ft func2
+func2
+
+unset -f func2
+
 trap '' DEBUG
 
 trap
@@ -40,9 +50,28 @@ trap '' int
 
 trap
 
+# exit 0 in exit trap should set exit status
+(
+set -e
+trap 'exit 0' EXIT
+false   
+echo bad
+)
+echo $?
+
 # hmmm...should this set the handling to SIG_IGN for children, too?
 trap '' USR2
-./trap.sub1
+./trap1.sub
+
+# test ERR trap
+./trap2.sub
+
+${THIS_SH} ./trap3.sub
+
+${THIS_SH} ./trap4.sub
+
+# This doesn't work right on all Unix versions
+#${THIS_SH} ./trap5.sub
 
 #
 # show that setting a trap on SIGCHLD is not disastrous.
@@ -53,6 +82,16 @@ trap 'echo caught a child death' SIGCHLD
 
 sleep 7 & sleep 6 & sleep 5 &
 
+# this will only catch the first, since there's a trap on SIGCHLD
 wait
 
 trap -p SIGCHLD
+
+# Now reset some of the signals the shell handles specially back to
+# their default values (with or without the SIG prefix)
+trap - SIGINT QUIT TERM
+
+trap
+
+trap - SIGCHLD
+wait