[Libguestfs] [PATCH v2 nbdkit 4/5] tests: Use a generic cleanup mechanism instead of explicit trap.

Richard W.M. Jones rjones at redhat.com
Thu Sep 13 16:09:26 UTC 2018


Thanks: Eric Blake for the suggestion here:
https://www.redhat.com/archives/libguestfs/2018-September/msg00069.html
---
 tests/functions.sh.in                  | 25 +++++++++++++++++++++++++
 tests/test-blocksize.sh                |  9 ++-------
 tests/test-cache.sh                    |  9 ++-------
 tests/test-cow.sh                      |  9 ++-------
 tests/test-data-7E.sh                  |  9 ++-------
 tests/test-data-base64.sh              |  9 ++-------
 tests/test-data-raw.sh                 |  9 ++-------
 tests/test-fua.sh                      |  9 ++-------
 tests/test-log.sh                      |  9 ++-------
 tests/test-memory-largest-for-qemu.sh  |  9 ++-------
 tests/test-memory-largest.sh           |  9 ++-------
 tests/test-nozero.sh                   |  9 ++-------
 tests/test-offset2.sh                  |  9 ++-------
 tests/test-parallel-file.sh            |  4 +++-
 tests/test-parallel-nbd.sh             |  4 +++-
 tests/test-pattern-largest-for-qemu.sh |  9 ++-------
 tests/test-pattern-largest.sh          |  9 ++-------
 tests/test-pattern.sh                  |  9 ++-------
 tests/test-single.sh                   | 10 ++--------
 tests/test-tls-psk.sh                  | 10 ++--------
 tests/test-tls.sh                      | 10 ++--------
 tests/test-truncate1.sh                |  9 ++-------
 tests/test-truncate2.sh                |  9 ++-------
 tests/test-zero.sh                     | 14 ++------------
 24 files changed, 73 insertions(+), 157 deletions(-)

diff --git a/tests/functions.sh.in b/tests/functions.sh.in
index 62fdfe5..42e3925 100644
--- a/tests/functions.sh.in
+++ b/tests/functions.sh.in
@@ -32,6 +32,31 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+# cleanup_fn f [args]
+#
+# A generic trap handling function.  This runs the function f + args
+# when the script exits for any reason.
+declare -a _cleanup_hook
+cleanup_fn ()
+{
+    _cleanup_hook[${#_cleanup_hook[@]}]="$@"
+}
+
+_run_cleanup_hooks ()
+{
+    status=$?
+    set +e
+    trap '' INT QUIT TERM EXIT ERR
+    echo $0: run cleanup hooks: exit code $status
+
+    for (( i = 0; i < ${#_cleanup_hook[@]}; ++i )); do
+        ${_cleanup_hook[i]}
+    done
+
+    exit $status
+}
+trap _run_cleanup_hooks INT QUIT TERM EXIT ERR
+
 # foreach_plugin f
 #
 # For each plugin that was built, call test function f with the plugin
diff --git a/tests/test-blocksize.sh b/tests/test-blocksize.sh
index cb9b09f..21b55b9 100755
--- a/tests/test-blocksize.sh
+++ b/tests/test-blocksize.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 
 files="blocksize1.img blocksize1.log blocksize1.sock blocksize1.pid
@@ -54,10 +55,6 @@ pid1= pid2=
 # Kill any nbdkit processes on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     test "$pid1" && kill $pid1
     test "$pid2" && kill $pid2
     # For easier debugging, dump the final log files before removing them.
@@ -66,10 +63,8 @@ cleanup ()
     echo "Log 2 file contents:"
     cat blocksize2.log || :
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Run two parallel nbdkit; to compare the logs and see what changes.
 nbdkit -P blocksize1.pid -U blocksize1.sock \
diff --git a/tests/test-cache.sh b/tests/test-cache.sh
index 215bab1..495469d 100755
--- a/tests/test-cache.sh
+++ b/tests/test-cache.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -60,16 +61,10 @@ pid="$(cat cache.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Open the overlay and perform some operations.
 guestfish --format=raw -a "nbd://?socket=$PWD/cache.sock" <<'EOF'
diff --git a/tests/test-cow.sh b/tests/test-cow.sh
index f9b0649..b5c8f63 100755
--- a/tests/test-cow.sh
+++ b/tests/test-cow.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -61,16 +62,10 @@ pid="$(cat cow.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Write some data into the overlay.
 guestfish --format=raw -a "nbd://?socket=$PWD/cow.sock" -m /dev/sda1 <<EOF
diff --git a/tests/test-data-7E.sh b/tests/test-data-7E.sh
index 8327511..adccd86 100755
--- a/tests/test-data-7E.sh
+++ b/tests/test-data-7E.sh
@@ -34,6 +34,7 @@
 # Test the data plugin creating a 7 EB partitioned disk, and
 # the partition filter on top.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -104,16 +105,10 @@ pid="$(cat data-7E.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Since we're reading the empty first partition, any read returns zeroes.
 qemu-io -r -f raw 'nbd+unix://?socket=data-7E.sock' \
diff --git a/tests/test-data-base64.sh b/tests/test-data-base64.sh
index 6ff324b..72cf743 100755
--- a/tests/test-data-base64.sh
+++ b/tests/test-data-base64.sh
@@ -33,6 +33,7 @@
 
 # Test the data plugin with base64= parameter.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -72,16 +73,10 @@ pid="$(cat data-base64.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=data-base64.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > data-base64.out
diff --git a/tests/test-data-raw.sh b/tests/test-data-raw.sh
index c6652b7..00d4fb1 100755
--- a/tests/test-data-raw.sh
+++ b/tests/test-data-raw.sh
@@ -33,6 +33,7 @@
 
 # Test the data plugin with raw= parameter.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -66,16 +67,10 @@ pid="$(cat data-raw.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=data-raw.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > data-raw.out
diff --git a/tests/test-fua.sh b/tests/test-fua.sh
index f95aa18..f7c4571 100755
--- a/tests/test-fua.sh
+++ b/tests/test-fua.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -55,10 +56,6 @@ pid1= pid2= pid3= pid4=
 # Kill any nbdkit processes on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     test "$pid1" && kill $pid1
     test "$pid2" && kill $pid2
     test "$pid3" && kill $pid3
@@ -73,10 +70,8 @@ cleanup ()
     echo "Log 4 file contents:"
     cat fua4.log || :
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Run four parallel nbdkit; to compare the logs and see what changes.
 # 1: fuamode=none (default): client should send flush instead
diff --git a/tests/test-log.sh b/tests/test-log.sh
index f811de4..5ad5f22 100755
--- a/tests/test-log.sh
+++ b/tests/test-log.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 
 files="log.img log.log log.sock log.pid"
@@ -63,19 +64,13 @@ pid="$(cat log.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     # For easier debugging, dump the final log file before removing it.
     echo "Log file contents:"
     cat log.log
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Write, then read some data in the file.
 qemu-io -f raw -c 'w -P 11 1M 2M' 'nbd+unix://?socket=log.sock'
diff --git a/tests/test-memory-largest-for-qemu.sh b/tests/test-memory-largest-for-qemu.sh
index 9bc498d..65f69b6 100755
--- a/tests/test-memory-largest-for-qemu.sh
+++ b/tests/test-memory-largest-for-qemu.sh
@@ -34,6 +34,7 @@
 # Test the memory plugin with the largest possible size supported
 # by qemu and nbdkit.
 
+source ./functions.sh
 set -e
 
 files="memory-largest-for-qemu.out memory-largest-for-qemu.pid memory-largest-for-qemu.sock"
@@ -68,16 +69,10 @@ pid="$(cat memory-largest-for-qemu.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Write some stuff to the beginning, middle and end.
 qemu-io -f raw 'nbd+unix://?socket=memory-largest-for-qemu.sock' \
diff --git a/tests/test-memory-largest.sh b/tests/test-memory-largest.sh
index d0a6c77..d2cad1c 100755
--- a/tests/test-memory-largest.sh
+++ b/tests/test-memory-largest.sh
@@ -34,6 +34,7 @@
 # Test the memory plugin with the largest possible size supported
 # by nbdkit.
 
+source ./functions.sh
 set -e
 
 files="memory-largest.out memory-largest.pid memory-largest.sock"
@@ -69,16 +70,10 @@ pid="$(cat memory-largest.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # qemu cannot open this image!
 #
diff --git a/tests/test-nozero.sh b/tests/test-nozero.sh
index 904d822..239d4bd 100755
--- a/tests/test-nozero.sh
+++ b/tests/test-nozero.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 
 files="nozero1.img nozero1.log nozero1.sock nozero1.pid
@@ -65,10 +66,6 @@ pid1= pid2= pid3= pid4= pid5a= pid5b=
 # Kill any nbdkit processes on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     test "$pid1" && kill $pid1
     test "$pid2" && kill $pid2
     test "$pid3" && kill $pid3
@@ -89,10 +86,8 @@ cleanup ()
     echo "Log 5b file contents:"
     cat nozero5b.log || :
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Run four parallel nbdkit; to compare the logs and see what changes.
 # 1: unfiltered, to check that qemu-io sends ZERO request and plugin trims
diff --git a/tests/test-offset2.sh b/tests/test-offset2.sh
index c37e060..2376301 100755
--- a/tests/test-offset2.sh
+++ b/tests/test-offset2.sh
@@ -33,6 +33,7 @@
 
 # Additional test of the offset filter using the pattern plugin.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -69,16 +70,10 @@ pid="$(cat offset2.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=offset2.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > offset2.out
diff --git a/tests/test-parallel-file.sh b/tests/test-parallel-file.sh
index fd88faa..1d27f93 100755
--- a/tests/test-parallel-file.sh
+++ b/tests/test-parallel-file.sh
@@ -31,6 +31,8 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
+
 # Check file-data was created by Makefile and qemu-io exists.
 if ! test -f file-data; then
     echo "$0: missing file-data"
@@ -41,7 +43,7 @@ if ! qemu-io --version; then
     exit 77
 fi
 
-trap 'rm -f test-parallel-file.data test-parallel-file.out' 0 1 2 3 15
+cleanup_fn rm -f test-parallel-file.data test-parallel-file.out
 
 # Populate file, and sanity check that qemu-io can issue parallel requests
 printf '%1024s' . > test-parallel-file.data
diff --git a/tests/test-parallel-nbd.sh b/tests/test-parallel-nbd.sh
index cb70f46..7aa8a9f 100755
--- a/tests/test-parallel-nbd.sh
+++ b/tests/test-parallel-nbd.sh
@@ -31,6 +31,8 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
+
 # Check file-data was created by Makefile and qemu-io exists.
 if ! test -f file-data; then
     echo "$0: missing file-data"
@@ -47,7 +49,7 @@ fi
 
 files="test-parallel-nbd.out test-parallel-nbd.sock test-parallel-nbd.data test-parallel-nbd.pid"
 rm -f $files
-trap "rm -f $files" INT QUIT TERM EXIT ERR
+cleanup_fn rm -f $files
 
 # Populate file, and sanity check that qemu-io can issue parallel requests
 printf '%1024s' . > test-parallel-nbd.data
diff --git a/tests/test-pattern-largest-for-qemu.sh b/tests/test-pattern-largest-for-qemu.sh
index cf70354..c2fa324 100755
--- a/tests/test-pattern-largest-for-qemu.sh
+++ b/tests/test-pattern-largest-for-qemu.sh
@@ -34,6 +34,7 @@
 # Test the pattern plugin with the largest possible size supported
 # by qemu and nbdkit.
 
+source ./functions.sh
 set -e
 
 files="pattern-largest-for-qemu.out pattern-largest-for-qemu.pid pattern-largest-for-qemu.sock"
@@ -67,16 +68,10 @@ pid="$(cat pattern-largest-for-qemu.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=pattern-largest-for-qemu.sock' \
         -c 'r -v 9223372036854774784 512' | grep -E '^[[:xdigit:]]+:' > pattern-largest-for-qemu.out
diff --git a/tests/test-pattern-largest.sh b/tests/test-pattern-largest.sh
index 2a903bf..60a77b3 100755
--- a/tests/test-pattern-largest.sh
+++ b/tests/test-pattern-largest.sh
@@ -34,6 +34,7 @@
 # Test the pattern plugin with the largest possible size supported
 # by nbdkit.
 
+source ./functions.sh
 set -e
 
 files="pattern-largest.out pattern-largest.pid pattern-largest.sock"
@@ -67,16 +68,10 @@ pid="$(cat pattern-largest.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # qemu cannot open this image!
 #
diff --git a/tests/test-pattern.sh b/tests/test-pattern.sh
index 68022c9..98c5139 100755
--- a/tests/test-pattern.sh
+++ b/tests/test-pattern.sh
@@ -38,6 +38,7 @@
 # what read parameters we give it.  Hence these tests are rather
 # limited. (XXX)
 
+source ./functions.sh
 set -e
 
 files="pattern.out pattern.pid pattern.sock"
@@ -69,16 +70,10 @@ pid="$(cat pattern.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=pattern.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > pattern.out
diff --git a/tests/test-single.sh b/tests/test-single.sh
index 35017c8..7c7edfc 100755
--- a/tests/test-single.sh
+++ b/tests/test-single.sh
@@ -31,9 +31,9 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
-source ./functions.sh
 
 if ! socat -h; then
     echo "$0: 'socat' command not available"
@@ -56,16 +56,10 @@ pid=$!
 
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Wait for socat to start up and create the socket.
 for i in `seq 1 10`; do
diff --git a/tests/test-tls-psk.sh b/tests/test-tls-psk.sh
index 99c5945..ac59a4c 100755
--- a/tests/test-tls-psk.sh
+++ b/tests/test-tls-psk.sh
@@ -31,9 +31,9 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
-source ./functions.sh
 
 # Don't fail if certain commands aren't available.
 if ! ss --version; then
@@ -97,16 +97,10 @@ pid="$(cat tls-psk.pid)"
 # Kill the process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f tls-psk.pid tls-psk.out
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Run qemu-img against the server.
 LANG=C \
diff --git a/tests/test-tls.sh b/tests/test-tls.sh
index 71bd8a4..1ba262e 100755
--- a/tests/test-tls.sh
+++ b/tests/test-tls.sh
@@ -31,9 +31,9 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -e
 set -x
-source ./functions.sh
 
 # Don't fail if certain commands aren't available.
 if ! ss --version; then
@@ -91,16 +91,10 @@ pid="$(cat tls.pid)"
 # Kill the process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f tls.pid tls.out
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 # Run qemu-img against the server.
 LANG=C \
diff --git a/tests/test-truncate1.sh b/tests/test-truncate1.sh
index 719f63b..c4f3b63 100755
--- a/tests/test-truncate1.sh
+++ b/tests/test-truncate1.sh
@@ -33,6 +33,7 @@
 
 # Test the truncate filter using the pattern plugin.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -68,16 +69,10 @@ pid="$(cat truncate1.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=truncate1.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > truncate1.out
diff --git a/tests/test-truncate2.sh b/tests/test-truncate2.sh
index 0295b96..8a04661 100755
--- a/tests/test-truncate2.sh
+++ b/tests/test-truncate2.sh
@@ -33,6 +33,7 @@
 
 # Test the truncate filter using the pattern plugin.
 
+source ./functions.sh
 set -e
 set -x
 
@@ -68,16 +69,10 @@ pid="$(cat truncate2.pid)"
 # Kill the nbdkit process on exit.
 cleanup ()
 {
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
     kill $pid
     rm -f $files
-
-    exit $status
 }
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn cleanup
 
 qemu-io -r -f raw 'nbd+unix://?socket=truncate2.sock' \
         -c 'r -v 0 512' | grep -E '^[[:xdigit:]]+:' > truncate2.out
diff --git a/tests/test-zero.sh b/tests/test-zero.sh
index 2c5cece..636e735 100755
--- a/tests/test-zero.sh
+++ b/tests/test-zero.sh
@@ -31,6 +31,7 @@
 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
+source ./functions.sh
 set -x
 set -e
 
@@ -42,18 +43,7 @@ fi
 
 files="test-zero.out"
 rm -f $files
-
-cleanup ()
-{
-    status=$?
-    trap '' INT QUIT TERM EXIT ERR
-    echo $0: cleanup: exit code $status
-
-    rm $files
-
-    exit $status
-}
-trap cleanup INT QUIT TERM EXIT ERR
+cleanup_fn rm $files
 
 nbdkit -U - zero --run 'qemu-img convert $nbd test-zero.out'
 
-- 
2.19.0.rc0




More information about the Libguestfs mailing list