6 top="$(WVPASS pwd)" || exit $?
7 tmpdir="$(WVPASS wvmktempdir)" || exit $?
9 export BUP_DIR="$tmpdir/bup"
10 export GIT_DIR="$tmpdir/bup"
14 bup() { "$top/bup" "$@"; }
15 compare-trees() { "$top/t/compare-trees" "$@"; }
21 WVSTART "gc (unchanged repo)"
24 WVPASS bup random 1k > src-1/1
25 WVPASS bup index src-1
26 WVPASS bup save --strip -n src-1 src-1
28 WVPASS bup gc $GC_OPTS -v
30 WVPASS bup restore -C "$tmpdir/restore" /src-1/latest
31 WVPASS compare-trees src-1/ "$tmpdir/restore/latest/"
34 WVSTART "gc (unchanged, new branch)"
37 WVPASS bup random 10M > src-2/1
38 WVPASS bup index src-2
39 WVPASS bup save --strip -n src-2 src-2
41 WVPASS bup gc $GC_OPTS -v
43 WVPASS rm -r "$tmpdir/restore"
44 WVPASS bup restore -C "$tmpdir/restore" /src-1/latest
45 WVPASS compare-trees src-1/ "$tmpdir/restore/latest/"
47 WVPASS rm -r "$tmpdir/restore"
48 WVPASS bup restore -C "$tmpdir/restore" /src-2/latest
49 WVPASS compare-trees src-2/ "$tmpdir/restore/latest/"
52 WVSTART "gc (removed branch)"
54 size_before=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
55 WVPASS rm "$BUP_DIR/refs/heads/src-2"
56 WVPASS bup gc $GC_OPTS -v
57 size_after=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
59 WVPASS [ "$size_before" -gt 5000 ]
60 WVPASS [ "$size_after" -lt 500 ]
62 WVPASS rm -r "$tmpdir/restore"
63 WVPASS bup restore -C "$tmpdir/restore" /src-1/latest
64 WVPASS compare-trees src-1/ "$tmpdir/restore/latest/"
66 WVPASS rm -r "$tmpdir/restore"
67 WVFAIL bup restore -C "$tmpdir/restore" /src-2/latest
70 WVPASS mkdir src-ab-clean src-ab-clean/a src-ab-clean/b
71 WVPASS bup random 1k > src-ab-clean/a/1
72 WVPASS bup random 10M > src-ab-clean/b/1
75 WVSTART "gc (rewriting)"
77 WVPASS rm -rf "$BUP_DIR"
80 WVPASS cp -pPR src-ab-clean src-ab
82 WVPASS bup index src-ab
83 WVPASS bup save --strip -n src-ab src-ab
84 WVPASS bup index --clear
85 WVPASS bup index src-ab
86 WVPASS bup save -vvv --strip -n a src-ab/a
88 size_before=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
89 WVPASS rm "$BUP_DIR/refs/heads/src-ab"
90 WVPASS bup gc $GC_OPTS -v
91 size_after=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
93 WVPASS [ "$size_before" -gt 5000 ]
94 WVPASS [ "$size_after" -lt 500 ]
96 WVPASS rm -r "$tmpdir/restore"
97 WVPASS bup restore -C "$tmpdir/restore" /a/latest
98 WVPASS compare-trees src-ab/a/ "$tmpdir/restore/latest/"
100 WVPASS rm -r "$tmpdir/restore"
101 WVFAIL bup restore -C "$tmpdir/restore" /src-ab/latest
104 WVSTART "gc (save -r after repo rewriting)"
106 WVPASS rm -rf "$BUP_DIR"
108 WVPASS bup -d bup-remote init
110 WVPASS cp -pPR src-ab-clean src-ab
112 WVPASS bup index src-ab
113 WVPASS bup save -r :bup-remote --strip -n src-ab src-ab
114 WVPASS bup index --clear
115 WVPASS bup index src-ab
116 WVPASS bup save -r :bup-remote -vvv --strip -n a src-ab/a
118 size_before=$(WVPASS du -k -s bup-remote | WVPASS cut -f1) || exit $?
119 WVPASS rm bup-remote/refs/heads/src-ab
120 WVPASS bup -d bup-remote gc $GC_OPTS -v
121 size_after=$(WVPASS du -k -s bup-remote | WVPASS cut -f1) || exit $?
123 WVPASS [ "$size_before" -gt 5000 ]
124 WVPASS [ "$size_after" -lt 500 ]
126 WVPASS rm -rf "$tmpdir/restore"
127 WVPASS bup -d bup-remote restore -C "$tmpdir/restore" /a/latest
128 WVPASS compare-trees src-ab/a/ "$tmpdir/restore/latest/"
130 WVPASS rm -r "$tmpdir/restore"
131 WVFAIL bup -d bup-remote restore -C "$tmpdir/restore" /src-ab/latest
133 # Make sure a post-gc index/save that includes gc-ed data works
134 WVPASS bup index src-ab
135 WVPASS bup save -r :bup-remote --strip -n src-ab src-ab
136 WVPASS rm -r "$tmpdir/restore"
137 WVPASS bup -d bup-remote restore -C "$tmpdir/restore" /src-ab/latest
138 WVPASS compare-trees src-ab/ "$tmpdir/restore/latest/"
141 WVSTART "gc (bup on after repo rewriting)"
143 WVPASS rm -rf "$BUP_DIR"
146 WVPASS cp -pPR src-ab-clean src-ab
148 WVPASS bup on - index src-ab
149 WVPASS bup on - save --strip -n src-ab src-ab
150 WVPASS bup index --clear
151 WVPASS bup on - index src-ab
152 WVPASS bup on - save -vvv --strip -n a src-ab/a
154 size_before=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
155 WVPASS rm "$BUP_DIR/refs/heads/src-ab"
156 WVPASS bup gc $GC_OPTS -v
157 size_after=$(WVPASS du -k -s "$BUP_DIR" | WVPASS cut -f1) || exit $?
159 WVPASS [ "$size_before" -gt 5000 ]
160 WVPASS [ "$size_after" -lt 500 ]
162 WVPASS rm -r "$tmpdir/restore"
163 WVPASS bup restore -C "$tmpdir/restore" /a/latest
164 WVPASS compare-trees src-ab/a/ "$tmpdir/restore/latest/"
166 WVPASS rm -r "$tmpdir/restore"
167 WVFAIL bup restore -C "$tmpdir/restore" /src-ab/latest
169 # Make sure a post-gc index/save that includes gc-ed data works
170 WVPASS bup on - index src-ab
171 WVPASS bup on - save --strip -n src-ab src-ab
172 WVPASS rm -r "$tmpdir/restore"
173 WVPASS bup restore -C "$tmpdir/restore" /src-ab/latest
174 WVPASS compare-trees src-ab/ "$tmpdir/restore/latest/"
177 WVPASS rm -rf "$tmpdir"