test-lib.sh: add "atexit" functionality

New function at_exit_function registers given function to be called
at script termination.

Functions so registered are called in the reverse order of their
registration; no arguments are passed.

Function is called only once; re-adding with function name already
registered will remove previous registration.

New function rm_exit_function can be used to remove registration.

Modules (and possibly test-lib.sh functions) in future commits will
register such functions.
This commit is contained in:
Tomi Ollila 2017-05-23 21:54:24 +03:00 committed by David Bremner
parent 523d2b50fc
commit eb157f8841

View file

@ -219,10 +219,21 @@ test_fixed=0
test_broken=0 test_broken=0
test_success=0 test_success=0
declare -a _exit_functions=()
at_exit_function () {
_exit_functions=($1 ${_exit_functions[@]/$1})
}
rm_exit_function () {
_exit_functions=(${_exit_functions[@]/$1})
}
_exit_common () { _exit_common () {
code=$? code=$?
trap - EXIT trap - EXIT
set +ex set +ex
for _fn in ${_exit_functions[@]}; do $_fn; done
rm -rf "$TEST_TMPDIR" rm -rf "$TEST_TMPDIR"
} }