]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: ignore errors during test cleanup, so cleanup can finish
authorDan Streetman <ddstreet@canonical.com>
Fri, 12 Jul 2019 18:09:48 +0000 (14:09 -0400)
committerDan Streetman <ddstreet@canonical.com>
Tue, 16 Jul 2019 22:05:15 +0000 (18:05 -0400)
Also move TESTDIR and STATEFILE removal into test_cleanup

test/TEST-02-CRYPTSETUP/test.sh
test/test-functions

index e28cec0340b588a2ed0c251fef178598eddac182..2dd2cce6e5cd9540fb11c86836928237aaf6dbcd 100755 (executable)
@@ -83,7 +83,8 @@ cleanup_root_var() {
 }
 
 test_cleanup() {
-    cleanup_root_var
+    # ignore errors, so cleanup can continue
+    cleanup_root_var || true
     _test_cleanup
 }
 
index f652e82dd07b585c1003e46c7ecbde7d05422931..17cb22be762055bde7b08cb72513f180a21c0770 100644 (file)
@@ -1706,14 +1706,20 @@ test_setup_cleanup() {
 }
 
 _test_cleanup() {
-    if mountpoint $TESTDIR/root; then
-        ddebug "umount $TESTDIR/root"
-        umount $TESTDIR/root
-    fi
-    if [[ $LOOPDEV && -b $LOOPDEV ]]; then
-        ddebug "losetup -d $LOOPDEV"
-        losetup -d $LOOPDEV
-    fi
+    # (post-test) cleanup should always ignore failure and cleanup as much as possible
+    (
+        set +e
+        if mountpoint $TESTDIR/root; then
+            ddebug "umount $TESTDIR/root"
+            umount $TESTDIR/root
+        fi
+        if [[ $LOOPDEV && -b $LOOPDEV ]]; then
+            ddebug "losetup -d $LOOPDEV"
+            losetup -d $LOOPDEV
+        fi
+        rm -fr "$TESTDIR"
+        rm -f "$STATEFILE"
+    ) || true
 }
 
 # can be overridden in specific test
@@ -1787,22 +1793,16 @@ do_test() {
             --clean)
                 echo "TEST CLEANUP: $TEST_DESCRIPTION"
                 test_cleanup
-                rm -fr "$TESTDIR"
-                rm -f "$STATEFILE"
                 ;;
             --all)
                 ret=0
-                echo -n "TEST: $TEST_DESCRIPTION ";
+                echo -n "TEST: $TEST_DESCRIPTION "
                 (
                     test_setup
                     test_setup_cleanup
                     test_run
-                    ret=$?
-                    test_cleanup
-                    rm -fr "$TESTDIR"
-                    rm -f "$STATEFILE"
-                    exit $ret
                 ) </dev/null >"$TESTLOG" 2>&1 || ret=$?
+                test_cleanup
                 if [ $ret -eq 0 ]; then
                     rm "$TESTLOG"
                     echo "[OK]"