summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <nicholson@endlessm.com>2019-06-13 15:57:17 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2019-06-19 17:30:24 +0000
commit0dd27bbf4b5a3f132a9b2418b391dacbcd64a003 (patch)
tree9c5c1ec723539b6a59e4da0a0f2a90dd3f53729b
parentb6979e7572395f3f99ba328ed9399ed4b862f9a7 (diff)
downloadostree-0dd27bbf4b5a3f132a9b2418b391dacbcd64a003.tar.gz
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
-rwxr-xr-xtests/libtest.sh15
-rwxr-xr-xtests/test-repo-finder-mount-integration.sh2
-rwxr-xr-xtests/test-rofiles-fuse.sh2
3 files changed, 15 insertions, 4 deletions
diff --git a/tests/libtest.sh b/tests/libtest.sh
index 99d7c967..e70b7b87 100755
--- a/tests/libtest.sh
+++ b/tests/libtest.sh
@@ -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)
diff --git a/tests/test-repo-finder-mount-integration.sh b/tests/test-repo-finder-mount-integration.sh
index 243df591..9ecc4cd6 100755
--- a/tests/test-repo-finder-mount-integration.sh
+++ b/tests/test-repo-finder-mount-integration.sh
@@ -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
diff --git a/tests/test-rofiles-fuse.sh b/tests/test-rofiles-fuse.sh
index 7b7474d0..1e09711c 100755
--- a/tests/test-rofiles-fuse.sh
+++ b/tests/test-rofiles-fuse.sh
@@ -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"