diff --git a/poc b/poc index 4cd9dc1..1e3fc4e 100755 --- a/poc +++ b/poc @@ -229,8 +229,10 @@ function on_exit { trap - RETURN local code="${1:-0}" last_error regex - mapfile -t tmp_error <"$MIAOU_BASH_ERROR" - 2>&3 >&3 dump_stderr + miaou_debug "" + + [[ ! -v tmp_error ]] && mapfile -t tmp_error <"$MIAOU_BASH_ERROR" + if [[ -v failure_type && "$failure_type" == 'RETURN' ]]; then last_error="${tmp_error[-1]}" regex='^(.*): line ([0-9]+): miaou_error: RETURN [0-9]+' @@ -249,7 +251,7 @@ function on_exit { else if [[ $code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then last_error="${tmp_error[-1]}" - miaou_debug "" + miaou_debug "" if [[ $code -eq 1 ]]; then regex='^(.*): line ([0-9]+): (.*): unbound variable$' if [[ "$last_error" =~ $regex ]]; then @@ -272,16 +274,20 @@ function on_exit { error_funcname=("${error_funcname[@]}" '
') fi fi + miaou_debug "" fi - miaou_debug "" fi - if [[ $code -gt 0 && -v failure_type ]]; then + 2>&3 >&3 dump_stderr + if [[ -v failure_type ]]; then 2>&3 >&4 dump_failure 2>&3 >&4 dump_stacktrace fi - - miaou_debug "" + if [[ $code -gt 0 ]]; then + miaou_debug "" + else + miaou_debug "" + fi } ## main @@ -301,7 +307,6 @@ trap 'on_return' RETURN if [[ -e /proc/$$/fd/3 ]]; then exec 4>&3 3>&-; else exec 4>/dev/tty; fi # swap fd 3 4 when fd 3 sent off exec 3>/dev/stderr 2>"$MIAOU_BASH_ERROR" -miaou_debug "" +miaou_debug "" # shellcheck source=/dev/null source "$BASH_ARGV0" -miaou_debug ""