Browse Source

almost child_error

main
pvincent 2 weeks ago
parent
commit
f9888f3b6c
  1. 23
      bin/miaou-bash
  2. 1
      test/stub/extra/library.bash

23
bin/miaou-bash

@ -290,6 +290,7 @@ function dump_failure {
function save_err_trace_to_main { function save_err_trace_to_main {
miaou_debug "<save_stacktrace_to_stderr count=${#error_source[@]} to=${MIAOU_BASH_ERROR_CHILDREN}>" miaou_debug "<save_stacktrace_to_stderr count=${#error_source[@]} to=${MIAOU_BASH_ERROR_CHILDREN}>"
local i source lineno funcname local i source lineno funcname
for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done
for i in "${!error_source[@]}"; do for i in "${!error_source[@]}"; do
source="${error_source[$i]}" source="${error_source[$i]}"
lineno="${error_lineno[$i]}" lineno="${error_lineno[$i]}"
@ -297,7 +298,6 @@ function save_err_trace_to_main {
miaou_debug "<trace source=${source} lineno=${lineno} funcname=${funcname}/>" miaou_debug "<trace source=${source} lineno=${lineno} funcname=${funcname}/>"
>>"$MIAOU_BASH_ERROR_CHILDREN" echo -e "\tmiaou_trace: source=${source} lineno=${lineno} funcname=${funcname}" >>"$MIAOU_BASH_ERROR_CHILDREN" echo -e "\tmiaou_trace: source=${source} lineno=${lineno} funcname=${funcname}"
done done
for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done
miaou_debug "</save_stacktrace_to_stderr>" miaou_debug "</save_stacktrace_to_stderr>"
} }
@ -347,10 +347,25 @@ function load_tmp_error {
miaou_debug "<tmp_error empty/>" miaou_debug "<tmp_error empty/>"
else else
miaou_debug "<tmp_error count=${count}>" miaou_debug "<tmp_error count=${count}>"
local i
for i in "${tmp_error[@]}"; do
miaou_debug "<tmperr content={$i}/>"
local i miaou_error_regex last_miaou_error_index=-1 content
local multiple_errors=()
miaou_error_regex='^(.*): line ([0-9]+): miaou_error:'
for i in "${!tmp_error[@]}"; do
content="${tmp_error[i]}"
miaou_debug "<tmperr index=$i content={$content}/>"
if [[ "$content" =~ $miaou_error_regex ]]; then
if [[ $last_miaou_error_index -ge 0 ]]; then
multiple_errors+=("$last_miaou_error_index")
fi
last_miaou_error_index=$i
fi
done done
if [[ "${#multiple_errors[@]}" -gt 0 ]]; then
miaou_debug "multiple_errors = ${multiple_errors[*]}"
for i in "${multiple_errors[@]}"; do unset "tmp_error[$i]"; done
tmp_error=("${tmp_error[@]}")
fi
miaou_debug "</tmp_error>" miaou_debug "</tmp_error>"
fi fi
else else

1
test/stub/extra/library.bash

@ -6,7 +6,6 @@
function library { function library {
echo library loaded echo library loaded
>&2 echo stderr from library >&2 echo stderr from library
pwd
# . "./test/stub/extra/onemore.bash" # . "./test/stub/extra/onemore.bash"
"./test/stub/extra/onemore.bash" "./test/stub/extra/onemore.bash"
} }

Loading…
Cancel
Save