-# This section destroys data in the bup repository, so it is done last.
-WVSTART "fsck"
-WVPASS bup fsck
-WVPASS bup fsck --quick
-if bup fsck --par2-ok; then
- WVSTART "fsck (par2)"
-else
- WVSTART "fsck (PAR2 IS MISSING)"
-fi
-WVPASS bup fsck -g
-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 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
-WVFAIL bup fsck --quick
-WVFAIL bup fsck --quick -rvv -j99 # fails because repairs were needed
-if bup fsck --par2-ok; then
- WVPASS bup fsck -r # ok because of repairs from last time
- WVPASS bup damage $BUP_DIR/objects/pack/*.pack -n202 -s1 --equal -S0
- WVFAIL bup fsck
- WVFAIL bup fsck -rvv # too many errors to be repairable
- WVFAIL bup fsck -r # too many errors to be repairable
-else
- WVFAIL bup fsck --quick -r # still fails because par2 was missing
-fi
-
-WVSTART "exclude-bupdir"
-D=exclude-bupdir.tmp
-force-delete $D
-mkdir $D
-export BUP_DIR="$D/.bup"
-WVPASS bup init
-touch $D/a
-WVPASS bup random 128k >$D/b
-mkdir $D/d $D/d/e
-WVPASS bup random 512 >$D/f
-WVPASS bup index -ux $D
-bup save -n exclude-bupdir $D
-WVPASSEQ "$(bup ls -a exclude-bupdir/latest/$TOP/$D/)" "a
-b
-d/
-f"
-
-WVSTART "exclude"
-D=exclude.tmp
-force-delete $D
-mkdir $D
-export BUP_DIR="$D/.bup"
-WVPASS bup init
-touch $D/a
-WVPASS bup random 128k >$D/b
-mkdir $D/d $D/d/e
-WVPASS bup random 512 >$D/f
-WVPASS bup index -ux --exclude $D/d $D
-bup save -n exclude $D
-WVPASSEQ "$(bup ls exclude/latest/$TOP/$D/)" "a
-b
-f"
-mkdir $D/g $D/h
-WVPASS bup index -ux --exclude $D/d --exclude $TOP/$D/g --exclude $D/h $D
-bup save -n exclude $D
-WVPASSEQ "$(bup ls exclude/latest/$TOP/$D/)" "a
-b
-f"
-
-WVSTART "exclude-from"
-D=exclude-fromdir.tmp
-EXCLUDE_FILE=exclude-from.tmp
-echo "$D/d
- $TOP/$D/g
-$D/h" > $EXCLUDE_FILE
-force-delete $D
-mkdir $D
-export BUP_DIR="$D/.bup"
-WVPASS bup init
-touch $D/a
-WVPASS bup random 128k >$D/b
-mkdir $D/d $D/d/e
-WVPASS bup random 512 >$D/f
-mkdir $D/g $D/h
-WVPASS bup index -ux --exclude-from $EXCLUDE_FILE $D
-bup save -n exclude-from $D
-WVPASSEQ "$(bup ls exclude-from/latest/$TOP/$D/)" "a
-b
-f"
-rm $EXCLUDE_FILE
-
-
-WVSTART "save --strip"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- WVPASS bup init
- 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
-
-WVSTART "save --strip-path (relative)"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- WVPASS bup init
- 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
-
-WVSTART "save --strip-path (absolute)"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- WVPASS bup init
- 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
-
-WVSTART "save --strip-path (no match)"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- WVPASS bup init
- 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
-
-WVSTART "save --graft (empty graft points disallowed)"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- 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
-
-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 bup init
- 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
-
-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 bup init
- 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=$TOP/$tmp/src/a/b" \
- -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/$TOP/$tmp/src/a/b/"
-) || WVFAIL
-
-WVSTART "save --graft /x/y=/a (shorter target)"
-(
- tmp=graft-points.tmp
- force-delete $tmp
- mkdir $tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- WVPASS bup init
- 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
-
-WVSTART "save --graft /x=/a/b (longer target)"
-(
- tmp=graft-points.tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- force-delete $tmp
- mkdir $tmp
- WVPASS bup init
- 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=$TOP/$tmp/src/a/b/c" \
- -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
-
-WVSTART "save --graft /x=/ (root target)"
-(
- tmp=graft-points.tmp
- export BUP_DIR="$(pwd)/$tmp/bup"
- force-delete $tmp
- mkdir $tmp
- WVPASS bup init
- 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
-
-#WVSTART "save --graft /=/x/ (root source)"
-# FIXME: Not tested for now -- will require cleverness, or caution as root.