@@ -295,21 +295,7 @@ function runner::run_test() {
295295
296296 local test_execution_result=$(
297297 # shellcheck disable=SC2064
298- # shellcheck disable=SC2154
299- trap "
300- exit_code=\$ ?
301- set +e
302- teardown_status=0
303- runner::run_tear_down \" $test_file \" || teardown_status=\$ ?
304- runner::clear_mocks
305- cleanup_testcase_temp_files
306- if [[ \$ teardown_status -ne 0 ]]; then
307- state::set_test_exit_code \"\$ teardown_status\"
308- else
309- state::set_test_exit_code \"\$ exit_code\"
310- fi
311- state::export_subshell_context
312- " EXIT
298+ trap " exit_code=\$ ?; runner::cleanup_on_exit \" $test_file \" \$ exit_code" EXIT
313299 state::initialize_assertions_count
314300 if ! runner::run_set_up " $test_file " ; then
315301 status=$?
@@ -480,6 +466,25 @@ function runner::run_test() {
480466 internal_log " Test passed" " $label "
481467}
482468
469+ function runner::cleanup_on_exit() {
470+ local test_file=" $1 "
471+ local exit_code=" $2 "
472+
473+ set +e
474+ local teardown_status=0
475+ runner::run_tear_down " $test_file " || teardown_status=$?
476+ runner::clear_mocks
477+ cleanup_testcase_temp_files
478+
479+ if [[ $teardown_status -ne 0 ]]; then
480+ state::set_test_exit_code " $teardown_status "
481+ else
482+ state::set_test_exit_code " $exit_code "
483+ fi
484+
485+ state::export_subshell_context
486+ }
487+
483488function runner::decode_subshell_output() {
484489 local test_execution_result=" $1 "
485490
0 commit comments