test-lib.sh: add "atexit" functionality
authorTomi Ollila <tomi.ollila@iki.fi>
Tue, 23 May 2017 18:54:24 +0000 (21:54 +0300)
committerDavid Bremner <david@tethera.net>
Fri, 26 May 2017 10:25:55 +0000 (07:25 -0300)
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.

test/test-lib.sh

index 988b00afde86b7ff306c2b0812d9b7e6fa0a0428..37f8ddfa4f94ff02cfe294392604b0c08545aa32 100644 (file)
@@ -219,10 +219,21 @@ test_fixed=0
 test_broken=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 () {
        code=$?
        trap - EXIT
        set +ex
+       for _fn in ${_exit_functions[@]}; do $_fn; done
        rm -rf "$TEST_TMPDIR"
 }