diff --git a/bin/miaou-bash b/bin/miaou-bash index 40ba50d..4841452 100755 --- a/bin/miaou-bash +++ b/bin/miaou-bash @@ -290,6 +290,7 @@ function dump_failure { function save_err_trace_to_main { miaou_debug "" local i source lineno funcname + for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done for i in "${!error_source[@]}"; do source="${error_source[$i]}" lineno="${error_lineno[$i]}" @@ -297,7 +298,6 @@ function save_err_trace_to_main { miaou_debug "" >>"$MIAOU_BASH_ERROR_CHILDREN" echo -e "\tmiaou_trace: source=${source} lineno=${lineno} funcname=${funcname}" done - for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done miaou_debug "" } @@ -347,10 +347,25 @@ function load_tmp_error { miaou_debug "" else miaou_debug "" - local i - for i in "${tmp_error[@]}"; do - miaou_debug "" + 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 "" + 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 + 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 "" fi else diff --git a/test/stub/extra/library.bash b/test/stub/extra/library.bash index 2868884..0a33269 100755 --- a/test/stub/extra/library.bash +++ b/test/stub/extra/library.bash @@ -6,7 +6,6 @@ function library { echo library loaded >&2 echo stderr from library - pwd # . "./test/stub/extra/onemore.bash" "./test/stub/extra/onemore.bash" }