]> arthur.barton.de Git - bup.git/blobdiff - t/test.sh
Remove all of the remaining test-related "set -e" usage.
[bup.git] / t / test.sh
index 83528458dac9fd417d787bc5d279979abbefb4f5..3f96ab005a80d9d835d8c344029d0d848f057492 100755 (executable)
--- a/t/test.sh
+++ b/t/test.sh
@@ -2,9 +2,7 @@
 . wvtest.sh
 . t/lib.sh
 
-#set -e
-
-TOP="$(/bin/pwd)"
+TOP="$(WVPASS /bin/pwd)" || exit $?
 export BUP_DIR="$TOP/buptest.tmp"
 
 bup()
@@ -14,14 +12,13 @@ bup()
 
 WVSTART "init"
 
-#set -x
-test -d "$BUP_DIR" && rm -r "$BUP_DIR"
+WVPASS rm -rf "$BUP_DIR"
 WVPASS bup init
 
 WVSTART "index"
 D=bupdata.tmp
-force-delete $D
-mkdir $D
+WVPASS force-delete $D
+WVPASS mkdir $D
 WVFAIL bup index --exclude-from $D/cannot-exist $D
 WVPASSEQ "$(bup index --check -p)" ""
 WVPASSEQ "$(bup index --check -p $D)" ""
@@ -29,9 +26,9 @@ WVFAIL [ -e $D.fake ]
 WVFAIL bup index --check -u $D.fake
 WVPASS bup index --check -u $D
 WVPASSEQ "$(bup index --check -p $D)" "$D/"
-touch $D/a
+WVPASS touch $D/a
 WVPASS bup random 128k >$D/b
-mkdir $D/d $D/d/e
+WVPASS mkdir $D/d $D/d/e
 WVPASS bup random 512 >$D/f
 WVPASS ln -s non-existent-file $D/g
 WVPASSEQ "$(bup index -s $D/)" "A $D/"
@@ -41,8 +38,8 @@ WVPASSEQ "$(bup index --check -us $D/b $D/d)" \
 "A $D/d/e/
 A $D/d/
 A $D/b"
-touch $D/d/z
-bup tick
+WVPASS touch $D/d/z
+WVPASS bup tick
 WVPASSEQ "$(bup index --check -usx $D)" \
 "A $D/g
 A $D/f
@@ -60,7 +57,7 @@ WVPASSEQ "$(bup index --check -us $D/d --fake-valid)" \
 "  $D/d/z
   $D/d/e/
   $D/d/"
-touch $D/d/z
+WVPASS touch $D/d/z
 WVPASS bup index -u $D/d/z  # becomes modified
 WVPASSEQ "$(bup index -s $D/a $D $D/b)" \
 "A $D/g
@@ -93,16 +90,16 @@ WVPASSEQ "$(cd $D && bup index -s .)" "$(cd $D && bup index -s .)"
 
 WVFAIL bup save -t $D/doesnt-exist-filename
 
-mv $BUP_DIR/bupindex $BUP_DIR/bi.old
+WVPASS mv $BUP_DIR/bupindex $BUP_DIR/bi.old
 WVFAIL bup save -t $D/d/e/fifotest
-mkfifo $D/d/e/fifotest
+WVPASS mkfifo $D/d/e/fifotest
 WVPASS bup index -u $D/d/e/fifotest
 WVPASS bup save -t $D/d/e/fifotest
 WVPASS bup save -t $D/d/e
-rm -f $D/d/e/fifotest
+WVPASS rm -f $D/d/e/fifotest
 WVPASS bup index -u $D/d/e
 WVFAIL bup save -t $D/d/e/fifotest
-mv $BUP_DIR/bi.old $BUP_DIR/bupindex
+WVPASS mv $BUP_DIR/bi.old $BUP_DIR/bupindex
 
 WVPASS bup index -u $D/d/e
 WVPASS bup save -t $D/d/e
@@ -128,11 +125,11 @@ WVFAIL bup save -r :$BUP_DIR/fake/path -n r-test $D
 WVFAIL bup save -r :$BUP_DIR -n r-test $D/fake/path
 
 WVSTART "split"
-echo a >a.tmp
-echo b >b.tmp
+WVPASS echo a >a.tmp
+WVPASS echo b >b.tmp
 WVPASS bup split -b a.tmp >taga.tmp
 WVPASS bup split -b b.tmp >tagb.tmp
-cat a.tmp b.tmp | WVPASS bup split -b >tagab.tmp
+WVPASS cat a.tmp b.tmp | WVPASS bup split -b >tagab.tmp
 WVPASSEQ $(cat taga.tmp | wc -l) 1
 WVPASSEQ $(cat tagb.tmp | wc -l) 1
 WVPASSEQ $(cat tagab.tmp | wc -l) 1
@@ -157,7 +154,7 @@ WVPASS bup midx -o $BUP_DIR/objects/pack/test1.midx \
 WVPASS bup midx --check -a
 all=$(echo $BUP_DIR/objects/pack/*.idx $BUP_DIR/objects/pack/*.midx)
 WVPASS bup midx -o $BUP_DIR/objects/pack/zzz.midx $all
-bup tick
+WVPASS bup tick
 WVPASS bup midx -o $BUP_DIR/objects/pack/yyy.midx $all
 WVPASS bup midx -a
 WVPASSEQ "$(echo $BUP_DIR/objects/pack/*.midx)" \
@@ -179,12 +176,12 @@ WVFAIL diff -u tags1.tmp tags2.tmp
 
 # fanout must be different from non-fanout
 WVFAIL diff tags2t.tmp tags2tf.tmp
-wc -c t/testfile1 t/testfile2
-wc -l tags1.tmp tags2.tmp
+WVPASS wc -c t/testfile1 t/testfile2
+WVPASS wc -l tags1.tmp tags2.tmp
 
 WVSTART "bloom"
 WVPASS bup bloom -c $(ls -1 $BUP_DIR/objects/pack/*.idx|head -n1)
-rm $BUP_DIR/objects/pack/bup.bloom
+WVPASS rm $BUP_DIR/objects/pack/bup.bloom
 WVPASS bup bloom -k 4
 WVPASS bup bloom -c $(ls -1 $BUP_DIR/objects/pack/*.idx|head -n1)
 WVPASS bup bloom -d buptest.tmp/objects/pack --ruin --force
@@ -209,38 +206,38 @@ WVPASS diff -u t/testfile2 out2c.tmp
 
 WVSTART "save/git-fsck"
 (
-    set -e
-    cd "$BUP_DIR" || exit 1
+    WVPASS cd "$BUP_DIR"
     #git repack -Ad
     #git prune
-    (cd "$TOP/t/sampledata" && WVPASS bup save -vvn master /) || WVFAIL
-    n=$(git fsck --full --strict 2>&1 | 
-      egrep -v 'dangling (commit|tree|blob)' |
-      tee -a /dev/stderr | 
-      wc -l)
+    (WVPASS cd "$TOP/t/sampledata" && WVPASS bup save -vvn master /) || exit $?
+    result="$(git fsck --full --strict 2>&1)" || exit $?
+    n=$(echo "$result" |
+        egrep -v 'dangling (commit|tree|blob)' |
+        WVPASS tee -a /dev/stderr |
+        WVPASS wc -l) || exit $?
     WVPASS [ "$n" -eq 0 ]
-) || exit 1
+) || exit $?
 
 WVSTART "restore"
-force-delete buprestore.tmp
+WVPASS force-delete buprestore.tmp
 WVFAIL bup restore boink
-touch $TOP/$D/$D
-bup index -u $TOP/$D
-bup save -n master /
+WVPASS touch $TOP/$D/$D
+WVPASS bup index -u $TOP/$D
+WVPASS bup save -n master /
 WVPASS bup restore -C buprestore.tmp "/master/latest/$TOP/$D"
 WVPASSEQ "$(ls buprestore.tmp)" "bupdata.tmp"
-force-delete buprestore.tmp
+WVPASS force-delete buprestore.tmp
 WVPASS bup restore -C buprestore.tmp "/master/latest/$TOP/$D/"
-touch $D/non-existent-file buprestore.tmp/non-existent-file # else diff fails
+WVPASS touch $D/non-existent-file buprestore.tmp/non-existent-file # else diff fails
 WVPASS diff -ur $D/ buprestore.tmp/
 
 (
     tmp=testrestore.tmp
-    force-delete $tmp
-    mkdir $tmp
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
     export BUP_DIR="$(pwd)/$tmp/bup"
-    WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS WVPASS bup init
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
@@ -251,34 +248,34 @@ WVPASS diff -ur $D/ buprestore.tmp/
     WVPASS t/compare-trees $tmp/src/ $tmp/restore/latest/
 
     WVSTART "restore /foo/latest/"
-    force-delete "$tmp/restore"
+    WVPASS force-delete "$tmp/restore"
     WVPASS bup restore -C $tmp/restore /foo/latest/
     for x in $tmp/src/*; do
         WVPASS t/compare-trees $x/ $tmp/restore/$(basename $x);
     done
 
     WVSTART "restore /foo/latest/."
-    force-delete "$tmp/restore"
+    WVPASS force-delete "$tmp/restore"
     WVPASS bup restore -C $tmp/restore /foo/latest/.
     WVPASS t/compare-trees $tmp/src/ $tmp/restore/
 
     WVSTART "restore /foo/latest/x"
-    force-delete "$tmp/restore"
+    WVPASS force-delete "$tmp/restore"
     WVPASS bup restore -C $tmp/restore /foo/latest/x
     WVPASS t/compare-trees $tmp/src/x/ $tmp/restore/x/
 
     WVSTART "restore /foo/latest/x/"
-    force-delete "$tmp/restore"
+    WVPASS force-delete "$tmp/restore"
     WVPASS bup restore -C $tmp/restore /foo/latest/x/
     for x in $tmp/src/x/*; do
         WVPASS t/compare-trees $x/ $tmp/restore/$(basename $x);
     done
 
     WVSTART "restore /foo/latest/x/."
-    force-delete "$tmp/restore"
+    WVPASS force-delete "$tmp/restore"
     WVPASS bup restore -C $tmp/restore /foo/latest/x/.
     WVPASS t/compare-trees $tmp/src/x/ $tmp/restore/
-) || WVFAIL
+) || exit $?
 
 
 WVSTART "ftp"
@@ -313,7 +310,7 @@ WVPASS bup fsck -r
 WVPASS bup damage $BUP_DIR/objects/pack/*.pack -n10 -s1 -S0
 WVFAIL bup fsck --quick
 WVFAIL bup fsck --quick --disable-par2
-chmod u+w $BUP_DIR/objects/pack/*.idx
+WVPASS chmod u+w $BUP_DIR/objects/pack/*.idx
 WVPASS bup damage $BUP_DIR/objects/pack/*.idx -n10 -s1 -S0
 WVFAIL bup fsck --quick -j4
 WVPASS bup damage $BUP_DIR/objects/pack/*.pack -n10 -s1024 --percent 0.4 -S0
@@ -331,16 +328,16 @@ fi
 
 WVSTART "exclude-bupdir"
 D=exclude-bupdir.tmp
-force-delete $D
-mkdir $D
+WVPASS force-delete $D
+WVPASS mkdir $D
 export BUP_DIR="$D/.bup"
 WVPASS bup init
-touch $D/a
+WVPASS touch $D/a
 WVPASS bup random 128k >$D/b
-mkdir $D/d $D/d/e
+WVPASS mkdir $D/d $D/d/e
 WVPASS bup random 512 >$D/f
 WVPASS bup index -ux $D
-bup save -n exclude-bupdir $D
+WVPASS bup save -n exclude-bupdir $D
 WVPASSEQ "$(bup ls -a exclude-bupdir/latest/$TOP/$D/)" "a
 b
 d/
@@ -348,169 +345,166 @@ f"
 
 WVSTART "exclude"
 (
-    set -e -o pipefail
     D=exclude.tmp
-    force-delete $D
-    mkdir $D
+    WVPASS force-delete $D
+    WVPASS mkdir $D
     export BUP_DIR="$D/.bup"
     WVPASS bup init
-    touch $D/a
+    WVPASS touch $D/a
     WVPASS bup random 128k >$D/b
-    mkdir $D/d $D/d/e
+    WVPASS mkdir $D/d $D/d/e
     WVPASS bup random 512 >$D/f
     WVPASS bup random 512 >$D/j
     WVPASS bup index -ux --exclude $D/d --exclude $D/j $D
-    bup save -n exclude $D
+    WVPASS bup save -n exclude $D
     WVPASSEQ "$(bup ls exclude/latest/$TOP/$D/)" "a
 b
 f"
-    mkdir $D/g $D/h
+    WVPASS mkdir $D/g $D/h
     WVPASS bup index -ux --exclude $D/d --exclude $TOP/$D/g --exclude $D/h \
         --exclude $TOP/$D/j $D
-    bup save -n exclude $D
+    WVPASS bup save -n exclude $D
     WVPASSEQ "$(bup ls exclude/latest/$TOP/$D/)" "a
 b
 f"
-) || WVFAIL
+) || exit $?
 
 WVSTART "exclude-from"
 (
-    set -e -o pipefail
     D=exclude-fromdir.tmp
     EXCLUDE_FILE=exclude-from.tmp
-    echo "$D/d 
+    WVPASS echo "$D/d 
  $TOP/$D/g
 $D/h
 $D/i" > $EXCLUDE_FILE
-    force-delete $D
-    mkdir $D
+    WVPASS force-delete $D
+    WVPASS mkdir $D
     export BUP_DIR="$D/.bup"
     WVPASS bup init
-    touch $D/a
+    WVPASS touch $D/a
     WVPASS bup random 128k >$D/b
-    mkdir $D/d $D/d/e
+    WVPASS mkdir $D/d $D/d/e
     WVPASS bup random 512 >$D/f
-    mkdir $D/g $D/h
+    WVPASS mkdir $D/g $D/h
     WVPASS bup random 128k > $D/i
     WVPASS bup index -ux --exclude-from $EXCLUDE_FILE $D
-    bup save -n exclude-from $D
+    WVPASS bup save -n exclude-from $D
     WVPASSEQ "$(bup ls exclude-from/latest/$TOP/$D/)" "a
 b
 f"
-    rm $EXCLUDE_FILE
-) || WVFAIL
+    WVPASS rm $EXCLUDE_FILE
+) || exit $?
 
 WVSTART "save (no index)"
 (
-    set -e
     tmp=save-no-index.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
     WVFAIL bup save -n nothing /
-    rm -r "$tmp"
-) || WVFAIL
+    WVPASS rm -r "$tmp"
+) || exit $?
 
 WVSTART "save --strip"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save --strip -n foo $tmp/src/x/y
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/x/y/ "$tmp/restore/latest/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --strip-path (relative)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save --strip-path $tmp/src -n foo $tmp/src/x
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/ "$tmp/restore/latest/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --strip-path (absolute)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save --strip-path "$TOP" -n foo $tmp/src
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/ "$tmp/restore/latest/$tmp/src/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --strip-path (no match)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save --strip-path $tmp/foo -n foo $tmp/src/x
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/ "$tmp/restore/latest/$TOP/$tmp/src/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft (empty graft points disallowed)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
     WVFAIL bup save --graft =/grafted -n graft-point-absolute $tmp
     WVFAIL bup save --graft $TOP/$tmp= -n graft-point-absolute $tmp
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft /x/y=/a/b (relative paths)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save --graft $tmp/src=x -n foo $tmp/src
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/ "$tmp/restore/latest/$TOP/x/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft /x/y=/a/b (matching structure)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
@@ -519,32 +513,32 @@ WVSTART "save --graft /x/y=/a/b (matching structure)"
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/x/y/ \
         "$tmp/restore/latest/$TOP/$tmp/src/a/b/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft /x/y=/a (shorter target)"
 (
     tmp=graft-points.tmp
-    force-delete $tmp
-    mkdir $tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save -v --graft "$TOP/$tmp/src/x/y=/a" -n foo $tmp/src/x/y
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/x/y/ "$tmp/restore/latest/a/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft /x=/a/b (longer target)"
 (
     tmp=graft-points.tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
-    force-delete $tmp
-    mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
@@ -552,23 +546,23 @@ WVSTART "save --graft /x=/a/b (longer target)"
         -n foo $tmp/src
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/ "$tmp/restore/latest/$TOP/$tmp/src/a/b/c/"
-) || WVFAIL
+) || exit $?
 
 WVSTART "save --graft /x=/ (root target)"
 (
     tmp=graft-points.tmp
-    export BUP_DIR="$(pwd)/$tmp/bup"
-    force-delete $tmp
-    mkdir $tmp
+    export BUP_DIR="$(WVPASS pwd)/$tmp/bup" || exit $?
+    WVPASS force-delete $tmp
+    WVPASS mkdir $tmp
     WVPASS bup init
-    mkdir -p $tmp/src/x/y/z
+    WVPASS mkdir -p $tmp/src/x/y/z
     WVPASS bup random 8k > $tmp/src/x/y/random-1
     WVPASS bup random 8k > $tmp/src/x/y/z/random-2
     WVPASS bup index -u $tmp/src
     WVPASS bup save -v --graft "$TOP/$tmp/src/x=/" -n foo $tmp/src/x
     WVPASS bup restore -C $tmp/restore /foo/latest
     WVPASS t/compare-trees $tmp/src/x/ "$tmp/restore/latest/"
-) || WVFAIL
+) || exit $?
 
 #WVSTART "save --graft /=/x/ (root source)"
 # FIXME: Not tested for now -- will require cleverness, or caution as root.
@@ -576,21 +570,21 @@ WVSTART "save --graft /x=/ (root target)"
 WVSTART "indexfile"
 D=indexfile.tmp
 INDEXFILE=tmpindexfile.tmp
-rm -f $INDEXFILE
-force-delete $D
-mkdir $D
+WVPASS rm -f $INDEXFILE
+WVPASS force-delete $D
+WVPASS mkdir $D
 export BUP_DIR="$D/.bup"
 WVPASS bup init
-touch $D/a
-touch $D/b
-mkdir $D/c
+WVPASS touch $D/a
+WVPASS touch $D/b
+WVPASS mkdir $D/c
 WVPASS bup index -ux $D
-bup save --strip -n bupdir $D
+WVPASS bup save --strip -n bupdir $D
 WVPASSEQ "$(bup ls bupdir/latest/)" "a
 b
 c/"
 WVPASS bup index -f $INDEXFILE --exclude=$D/c -ux $D
-bup save --strip -n indexfile -f $INDEXFILE $D
+WVPASS bup save --strip -n indexfile -f $INDEXFILE $D
 WVPASSEQ "$(bup ls indexfile/latest/)" "a
 b"
 
@@ -598,13 +592,13 @@ b"
 WVSTART "import-rsnapshot"
 D=rsnapshot.tmp
 export BUP_DIR="$TOP/$D/.bup"
-force-delete $D
-mkdir $D
+WVPASS force-delete $D
+WVPASS mkdir $D
 WVPASS bup init
-mkdir -p $D/hourly.0/buptest/a
-touch $D/hourly.0/buptest/a/b
-mkdir -p $D/hourly.0/buptest/c/d
-touch $D/hourly.0/buptest/c/d/e
+WVPASS mkdir -p $D/hourly.0/buptest/a
+WVPASS touch $D/hourly.0/buptest/a/b
+WVPASS mkdir -p $D/hourly.0/buptest/c/d
+WVPASS touch $D/hourly.0/buptest/c/d/e
 WVPASS true
 WVPASS bup import-rsnapshot $D/
 WVPASSEQ "$(bup ls buptest/latest/)" "a/
@@ -615,13 +609,13 @@ if [ "$(which rdiff-backup)" != "" ]; then
     WVSTART "import-rdiff-backup"
     D=rdiff-backup.tmp
     export BUP_DIR="$TOP/$D/.bup"
-    force-delete $D
-    mkdir $D
+    WVPASS force-delete $D
+    WVPASS mkdir $D
     WVPASS bup init
-    mkdir $D/rdiff-backup
-    rdiff-backup $TOP/cmd $D/rdiff-backup
-    bup tick
-    rdiff-backup $TOP/Documentation $D/rdiff-backup
+    WVPASS mkdir $D/rdiff-backup
+    WVPASS rdiff-backup $TOP/cmd $D/rdiff-backup
+    WVPASS bup tick
+    WVPASS rdiff-backup $TOP/Documentation $D/rdiff-backup
     WVPASS bup import-rdiff-backup $D/rdiff-backup import-rdiff-backup
     WVPASSEQ "$(bup ls import-rdiff-backup/ | wc -l)" "3"
     WVPASSEQ "$(bup ls import-rdiff-backup/latest/ | sort)" "$(ls $TOP/Documentation | sort)"
@@ -631,124 +625,128 @@ fi
 WVSTART "compression"
 D=compression0.tmp
 export BUP_DIR="$TOP/$D/.bup"
-force-delete $D
-mkdir $D
+WVPASS force-delete $D
+WVPASS mkdir $D
 WVPASS bup init
 WVPASS bup index $TOP/Documentation
 WVPASS bup save -n compression -0 --strip $TOP/Documentation
 # 'ls' on NetBSD sets -A by default when running as root, so we have to undo
 # it by grepping out any dotfiles.  (Normal OSes don't auto-set -A, but this
 # is harmless there.)
-WVPASSEQ "$(bup ls compression/latest/ | sort)" \
-        "$(ls $TOP/Documentation | grep -v '^\.' | sort)"
-COMPRESSION_0_SIZE=$(du -k -s $D | cut -f1)
+expected="$(WVPASS ls $TOP/Documentation | grep -v '^\.' | WVPASS sort)" \
+    || exit $?
+actual="$(WVPASS bup ls compression/latest/ | WVPASS sort)" || exit $?
+WVPASSEQ "$actual" "$expected"
+COMPRESSION_0_SIZE=$(WVPASS du -k -s $D | WVPASS cut -f1) || exit $?
 
 D=compression9.tmp
 export BUP_DIR="$TOP/$D/.bup"
-force-delete $D
-mkdir $D
+WVPASS force-delete $D
+WVPASS mkdir $D
 WVPASS bup init
 WVPASS bup index $TOP/Documentation
 WVPASS bup save -n compression -9 --strip $TOP/Documentation
 WVPASSEQ "$(bup ls compression/latest/ | sort)" \
          "$(ls $TOP/Documentation | grep -v '^\.' | sort)"
-COMPRESSION_9_SIZE=$(du -k -s $D | cut -f1)
+COMPRESSION_9_SIZE=$(WVPASS du -k -s $D | WVPASS cut -f1) || exit $?
 
 WVPASS [ "$COMPRESSION_9_SIZE" -lt "$COMPRESSION_0_SIZE" ]
 
-
 WVSTART "save disjoint top-level directories"
 (
-    set -e
     # Resolve any symlinks involving the top top-level dirs.
-    real_pwd="$(realpath .)"
-    real_tmp="$(realpath /tmp/.)"
-    pwd_top="$(echo $real_pwd | awk -F "/" '{print $2}')"
-    tmp_top="$(echo $real_tmp | awk -F "/" '{print $2}')"
+    real_pwd="$(WVPASS realpath .)" || exit $?
+    real_tmp="$(WVPASS realpath /tmp/.)" || exit $?
+    pwd_top="$(echo $real_pwd | WVPASS awk -F "/" '{print $2}')" || exit $?
+    tmp_top="$(echo $real_tmp | WVPASS awk -F "/" '{print $2}')" || exit $?
+
     if [ "$pwd_top" = "$tmp_top" ]; then
-        echo "(running from within /$tmp_top; skipping test)"
+        echo "(running from within /$tmp_top; skipping test)" 1>&2
         exit 0
     fi
     D=bupdata.tmp
-    force-delete $D
-    mkdir -p $D/x
-    date > $D/x/1
-    tmpdir="$(mktemp -d $real_tmp/bup-test-XXXXXXX)"
-    cleanup() { set -x; rm -r "${tmpdir}"; set +x; }
-    trap cleanup EXIT
-    date > "$tmpdir/2"
+    WVPASS force-delete $D
+    WVPASS mkdir -p $D/x
+    WVPASS date > $D/x/1
+    tmpdir="$(WVPASS mktemp -d $real_tmp/bup-test-XXXXXXX)" || exit $?
+    cleanup() { WVPASS rm -r "${tmpdir}"; }
+    WVPASS trap cleanup EXIT
+    WVPASS date > "$tmpdir/2"
 
     export BUP_DIR="$TOP/buptest.tmp"
-    test -d "$BUP_DIR" && rm -r "$BUP_DIR"
+    WVPASS test -d "$BUP_DIR" && WVPASS rm -r "$BUP_DIR"
 
     WVPASS bup init
     WVPASS bup index -vu $(pwd)/$D/x "$tmpdir"
     WVPASS bup save -t -n src $(pwd)/$D/x "$tmpdir"
 
     # For now, assume that "ls -a" and "sort" use the same order.
-    WVPASSEQ "$(bup ls -a src/latest)" \
-        "$(echo -e "$pwd_top/\n$tmp_top/" | sort)"
-) || WVFAIL
+    actual="$(WVPASS bup ls -a src/latest)" || exit $?
+    expected="$(echo -e "$pwd_top/\n$tmp_top/" | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" "$expected"
+) || exit $?
 
 WVSTART "clear-index"
 D=clear-index.tmp
 export BUP_DIR="$TOP/$D/.bup"
-force-delete $TOP/$D
-mkdir $TOP/$D
+WVPASS force-delete $TOP/$D
+WVPASS mkdir $TOP/$D
 WVPASS bup init
-touch $TOP/$D/foo
-touch $TOP/$D/bar
-bup index -u $D
+WVPASS touch $TOP/$D/foo
+WVPASS touch $TOP/$D/bar
+WVPASS bup index -u $D
 WVPASSEQ "$(bup index -p)" "$D/foo
 $D/bar
 $D/
 ./"
-rm $TOP/$D/foo
+WVPASS rm $TOP/$D/foo
 WVPASS bup index --clear
-bup index -u $TOP/$D
-WVPASSEQ "$(bup index -p)" "$D/bar
+WVPASS bup index -u $TOP/$D
+expected="$(WVPASS bup index -p)" || exit $?
+WVPASSEQ "$expected" "$D/bar
 $D/
 ./"
 
 # bup index --exclude-rx ...
 (
-    set -e
     export BUP_DIR="$TOP/buptest.tmp"
     D=bupdata.tmp
 
     WVSTART "index --exclude-rx '^/foo' (root anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    mkdir $D/sub1
-    mkdir $D/sub2
-    touch $D/sub1/a
-    touch $D/sub2/b
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS mkdir $D/sub1
+    WVPASS mkdir $D/sub2
+    WVPASS touch $D/sub1/a
+    WVPASS touch $D/sub2/b
     WVPASS bup index -u $D --exclude-rx "^$(pwd)/$D/sub1/"
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./sub2
 ./sub2/b"
 
     WVSTART "index --exclude-rx '/foo$' (non-dir, tail anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D --exclude-rx '/foo$'
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./sub
@@ -756,85 +754,88 @@ $D/
 ./sub/foo/a"
 
     WVSTART "index --exclude-rx '/foo/$' (dir, tail anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D --exclude-rx '/foo/$'
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./foo
 ./sub"
 
     WVSTART "index --exclude-rx '/foo/.' (dir content)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D --exclude-rx '/foo/.'
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./foo
 ./sub
 ./sub/foo"
-) || WVFAIL
+) || exit $?
 
 
 # bup restore --exclude-rx ...
 (
-    set -e
     export BUP_DIR="$TOP/buptest.tmp"
     D=bupdata.tmp
 
     WVSTART "restore --exclude-rx '^/foo' (root anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    mkdir $D/sub1
-    mkdir $D/sub2
-    touch $D/sub1/a
-    touch $D/sub2/b
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS mkdir $D/sub1
+    WVPASS mkdir $D/sub2
+    WVPASS touch $D/sub1/a
+    WVPASS touch $D/sub2/b
     WVPASS bup index -u $D
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp --exclude-rx "^/sub1/" /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp --exclude-rx "^/sub1/" /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./sub2
 ./sub2/b"
 
     WVSTART "restore --exclude-rx '/foo$' (non-dir, tail anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp --exclude-rx '/foo$' /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo$' /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./sub
@@ -842,41 +843,43 @@ $D/
 ./sub/foo/a"
 
     WVSTART "restore --exclude-rx '/foo/$' (dir, tail anchor)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp --exclude-rx '/foo/$' /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo/$' /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./foo
 ./sub"
 
     WVSTART "restore --exclude-rx '/foo/.' (dir content)"
-    rm -rf "$D" "$BUP_DIR" buprestore.tmp
+    WVPASS rm -rf "$D" "$BUP_DIR" buprestore.tmp
     WVPASS bup init
-    mkdir $D
-    touch $D/a
-    touch $D/b
-    touch $D/foo
-    mkdir $D/sub
-    mkdir $D/sub/foo
-    touch $D/sub/foo/a
+    WVPASS mkdir $D
+    WVPASS touch $D/a
+    WVPASS touch $D/b
+    WVPASS touch $D/foo
+    WVPASS mkdir $D/sub
+    WVPASS mkdir $D/sub/foo
+    WVPASS touch $D/sub/foo/a
     WVPASS bup index -u $D
-    bup save --strip -n bupdir $D
-    bup restore -C buprestore.tmp --exclude-rx '/foo/.' /bupdir/latest/
-    WVPASSEQ "$(cd buprestore.tmp && find . | sort)" ".
+    WVPASS bup save --strip -n bupdir $D
+    WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo/.' /bupdir/latest/
+    actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
+    WVPASSEQ "$actual" ".
 ./a
 ./b
 ./foo
 ./sub
 ./sub/foo"
-) || WVFAIL
+) || exit $?