tests/libtest: Allow appending actions to be run on EXIT

Currently if a test script adds a trap on `EXIT` to run some cleanup, it
will stomp on the existing trap to run `save_core()`. Allow for scripts
to append actions that will run on exit by introducing an array that
will be iterated over by a single exit runner.

Closes: #1799
Approved by: cgwalters
This commit is contained in:
Dan Nicholson authored and Atomic Bot committed 2019-06-19 17:30:24 +00:00
1 parent b6979e7572
commit 0dd27bbf4b
3 files changed
+15 -4

No files matched your search

+13 -2
View File
@@ -34,13 +34,24 @@ else
fi
. ${test_srcdir}/libtest-core.sh
# Array of expressions to execute when exiting. Each expression should
# be a single string (quoting if necessary) that will be eval'd. To add
# a command to run on exit, append to the libtest_exit_cmds array like
# libtest_exit_cmds+=(expr).
libtest_exit_cmds=()
run_exit_cmds() {
for expr in "${libtest_exit_cmds[@]}"; do
eval "${expr}" || true
done
}
trap run_exit_cmds EXIT
save_core() {
if [ -e core ]; then
cp core "$test_srcdir/core"
fi
}
trap save_core EXIT;
libtest_exit_cmds+=(save_core)
test_tmpdir=$(pwd)
+1 -1
View File
@@ -55,7 +55,7 @@ _mount_cleanup () {
case "${TEST_SKIP_CLEANUP:-}" in
no|"")
trap _mount_cleanup EXIT
libtest_exit_cmds+=(_mount_cleanup)
;;
err)
trap _mount_cleanup ERR
+1 -1
View File
@@ -41,7 +41,7 @@ rofiles-fuse checkout-test2 mnt
cleanup_fuse() {
fusermount -u ${test_tmpdir}/mnt || true
}
trap cleanup_fuse EXIT
libtest_exit_cmds+=(cleanup_fuse)
assert_file_has_content mnt/firstfile first
echo "ok mount"