]> arthur.barton.de Git - bup.git/blob - t/test-fsck.sh
27f103afc9ad9572571c0b2028fd94b05697cee0
[bup.git] / t / test-fsck.sh
1 #!/usr/bin/env bash
2 . ./wvtest-bup.sh || exit $?
3
4 set -o pipefail
5
6 top="$(WVPASS pwd)" || exit $?
7 tmpdir="$(WVPASS wvmktempdir)" || exit $?
8
9 bup() { "$top/bup" "$@"; }
10
11 WVPASS make install DESTDIR="$tmpdir/src"
12 WVPASS cp -a "$top/t/sampledata" "$tmpdir/src/"
13
14 export BUP_DIR="$tmpdir/bup"
15 export GIT_DIR="$tmpdir/bup"
16
17 WVPASS bup init
18 WVPASS cd "$tmpdir"
19
20 WVSTART "fsck"
21
22 WVPASS bup index src
23 WVPASS bup save -n fsck-test src/sampledata
24 WVPASS bup save -n fsck-test src/usr/bin
25 WVPASS bup save -n fsck-test src/usr/lib
26 WVPASS bup save -n fsck-test src/usr/share
27 WVPASS bup fsck
28 WVPASS bup fsck --quick
29 if bup fsck --par2-ok; then
30     WVSTART "fsck (par2)"
31 else
32     WVSTART "fsck (PAR2 IS MISSING)"
33 fi
34 WVPASS bup fsck -g
35 WVPASS bup fsck -r
36 WVPASS bup damage "$BUP_DIR"/objects/pack/*.pack -n10 -s1 -S0
37 WVFAIL bup fsck --quick
38 WVFAIL bup fsck --quick --disable-par2
39 WVPASS chmod u+w "$BUP_DIR"/objects/pack/*.idx
40 WVPASS bup damage "$BUP_DIR"/objects/pack/*.idx -n10 -s1 -S0
41 WVFAIL bup fsck --quick -j4
42 WVPASS bup damage "$BUP_DIR"/objects/pack/*.pack -n10 -s1024 --percent 0.4 -S0
43 WVFAIL bup fsck --quick
44 WVFAIL bup fsck --quick -rvv -j99   # fails because repairs were needed
45 if bup fsck --par2-ok; then
46     WVPASS bup fsck -r # ok because of repairs from last time
47     WVPASS bup damage "$BUP_DIR"/objects/pack/*.pack -n202 -s1 --equal -S0
48     WVFAIL bup fsck
49     WVFAIL bup fsck -rvv   # too many errors to be repairable
50     WVFAIL bup fsck -r   # too many errors to be repairable
51 else
52     WVFAIL bup fsck --quick -r # still fails because par2 was missing
53 fi
54
55
56 WVPASS rm -rf "$tmpdir"