]> arthur.barton.de Git - bup.git/blobdiff - wvtest-bash.sh
wvtest.sh: print a backtrace on failure when running under bash.
[bup.git] / wvtest-bash.sh
diff --git a/wvtest-bash.sh b/wvtest-bash.sh
new file mode 100644 (file)
index 0000000..61f8dce
--- /dev/null
@@ -0,0 +1,32 @@
+
+declare -a _wvbtstack
+
+_wvpushcall()
+{
+    _wvbtstack[${#_wvbtstack[@]}]="$*"
+}
+
+_wvpopcall()
+{
+    unset _wvbtstack[$((${#_wvbtstack[@]} - 1))]
+}
+
+_wvbacktrace()
+{
+    local i loc
+    local call=$((${#_wvbtstack[@]} - 1))
+    for ((i=0; i <= ${#FUNCNAME[@]}; i++)); do
+       local name="${FUNCNAME[$i]}"
+       if test "${name:0:2}" == WV; then
+            loc="${BASH_SOURCE[$i+1]}:${BASH_LINENO[$i]}"
+           echo "called from $loc ${FUNCNAME[$i]} ${_wvbtstack[$call]}" 1>&2
+           ((call--))
+       fi
+    done
+}
+
+_wvfind_caller()
+{
+    WVCALLER_FILE=${BASH_SOURCE[2]}
+    WVCALLER_LINE=${BASH_LINENO[1]}
+}