Browse Source

before fix empty failure_type on scenario return

main
pvincent 2 days ago
parent
commit
9817730d7f
  1. 56
      bin/miaou-bash
  2. 2
      test/miaou-bash.test.bash

56
bin/miaou-bash

@ -48,38 +48,33 @@ function on_return {
function on_exit { function on_exit {
code=${1:-0} code=${1:-0}
stack_lines=("${BASH_LINENO[@]}")
stack_functions=("${FUNCNAME[@]}")
stack_sources=("${BASH_SOURCE[@]}")
# >/dev/tty echo "stack_functionsA ${#stack_functions[@]} ${stack_functions[@]}"
unset 'stack_lines[-1]'
unset 'stack_lines[-1]'
unset 'stack_functions[0]'
unset 'stack_functions[-1]'
if [[ $code -gt 0 ]]; then
stack_lines=("${BASH_LINENO[@]}")
stack_functions=("${FUNCNAME[@]}")
stack_sources=("${BASH_SOURCE[@]}")
# >/dev/tty echo "stack_functionsB ${#stack_functions[@]} ${stack_functions[@]}"
[[ "${#stack_functions[@]}" -gt 0 ]] && stack_functions[-1]='<main>'
unset 'stack_lines[-1]'
unset 'stack_lines[-1]'
unset 'stack_functions[0]'
unset 'stack_functions[-1]'
unset 'stack_sources[0]'
unset 'stack_sources[-1]'
[[ "${#stack_functions[@]}" -gt 0 ]] && stack_functions[-1]='<main>'
if [[ "${#stack_functions[@]}" -gt 1 && "${stack_functions[1]}" =~ exit|false && "${stack_sources[1]}" == "${BASH_SOURCE[0]}" ]]; then
# the exit or false case scenario
unset 'stack_functions[1]'
unset 'stack_sources[1]'
unset 'stack_lines[0]'
fi
unset 'stack_sources[0]'
unset 'stack_sources[-1]'
stack_lines=("${stack_lines[@]}")
stack_functions=("${stack_functions[@]}")
stack_sources=("${stack_sources[@]}")
if [[ "${#stack_functions[@]}" -gt 1 && "${stack_functions[1]}" =~ exit|false && "${stack_sources[1]}" == "${BASH_SOURCE[0]}" ]]; then
# the exit or false case scenario
unset 'stack_functions[1]'
unset 'stack_sources[1]'
unset 'stack_lines[0]'
fi
failure_traces=()
failure_payload=''
stack_lines=("${stack_lines[@]}")
stack_functions=("${stack_functions[@]}")
stack_sources=("${stack_sources[@]}")
if [[ $code -gt 0 ]]; then
failure_payload=''
last_error=$(tail -n1 "$MIAOU_BASH_ERROR") last_error=$(tail -n1 "$MIAOU_BASH_ERROR")
last_source=${stack_sources[0]} last_source=${stack_sources[0]}
@ -165,7 +160,7 @@ function on_exit {
fi fi
fi fi
else else
# failure_type='UNDEFINED'
failure_type='UNDEFINED'
miaou_debug "last error=${last_error}" miaou_debug "last error=${last_error}"
failure_payload="${last_error}" failure_payload="${last_error}"
regex="^ .*:[0-9]* .*\$" regex="^ .*:[0-9]* .*\$"
@ -185,10 +180,6 @@ function on_exit {
fi fi
fi fi
for i in "${!stack_functions[@]}"; do
stack_detail=$(printf "\t%40s\t%s\n" "${stack_sources[$i]}:${stack_lines[$i]}" "${stack_functions[$i]}")
failure_traces+=("$stack_detail")
done
dump_failure dump_failure
else else
dump_success dump_success
@ -267,9 +258,6 @@ function dump_failure {
miaou_debug '---stacktrace---' miaou_debug '---stacktrace---'
>&4 ansi_traces stack_sources stack_lines stack_functions >&4 ansi_traces stack_sources stack_lines stack_functions
# for i in "${failure_traces[@]}"; do
# >&4 echo -e "$i"
# done
miaou_debug '---end of stacktrace---' miaou_debug '---end of stacktrace---'
cleanup cleanup
} }

2
test/miaou-bash.test.bash

@ -55,7 +55,7 @@ fail_type return RETURN
failed=$((TEST_COUNT - SUCCESS_COUNT)) failed=$((TEST_COUNT - SUCCESS_COUNT))
if [[ $failed -gt 0 ]]; then if [[ $failed -gt 0 ]]; then
ratio=$((100 * SUCCESS_COUNT / TEST_COUNT)) ratio=$((100 * SUCCESS_COUNT / TEST_COUNT))
echo "${ratio}% passed, $failed test have failed!"
echo "${ratio}% passed, $SUCCESS_COUNT succeeded, $failed failed!"
exit 1 exit 1
else else
echo 100% passed! echo 100% passed!

Loading…
Cancel
Save