2 . ./wvtest-bup.sh || exit $?
7 top="$(WVPASS pwd)" || exit $?
8 tmpdir="$(WVPASS wvmktempdir)" || exit $?
10 export BUP_DIR="$tmpdir/bup"
11 export GIT_DIR="$tmpdir/bup"
13 bup() { "$top/bup" "$@"; }
18 WVSTART "index excludes bupdir"
19 WVPASS force-delete src "$BUP_DIR"
23 WVPASS bup random 128k >src/b
24 WVPASS mkdir src/d src/d/e
25 WVPASS bup random 512 >src/f
26 WVPASS bup index -ux src
27 WVPASS bup save -n exclude-bupdir src
28 WVPASSEQ "$(bup ls -AF "exclude-bupdir/latest/$tmpdir/src/")" "a
34 WVSTART "index --exclude"
35 WVPASS force-delete src "$BUP_DIR"
39 WVPASS bup random 128k >src/b
40 WVPASS mkdir src/d src/d/e
41 WVPASS bup random 512 >src/f
42 WVPASS bup random 512 >src/j
43 WVPASS bup index -ux --exclude src/d --exclude src/j src
44 WVPASS bup save -n exclude src
45 WVPASSEQ "$(bup ls "exclude/latest/$tmpdir/src/")" "a
48 WVPASS mkdir src/g src/h
49 WVPASS bup index -ux --exclude src/d --exclude $tmpdir/src/g --exclude src/h \
50 --exclude "$tmpdir/src/j" src
51 WVPASS bup save -n exclude src
52 WVPASSEQ "$(bup ls "exclude/latest/$tmpdir/src/")" "a
57 WVSTART "index --exclude-from"
58 WVPASS force-delete src "$BUP_DIR"
66 WVPASS bup random 128k >src/b
67 WVPASS mkdir src/d src/d/e
68 WVPASS bup random 512 >src/f
69 WVPASS mkdir src/g src/h
70 WVPASS bup random 128k > src/i
71 WVPASS bup index -ux --exclude-from exclude-list src
72 WVPASS bup save -n exclude-from src
73 WVPASSEQ "$(bup ls "exclude-from/latest/$tmpdir/src/")" "a
76 WVPASS rm exclude-list
79 # bup index --exclude-rx ...
80 # ==========================
82 WVSTART "index --exclude-rx '^/foo' (root anchor)"
83 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
90 WVPASS touch src/sub1/a
91 WVPASS touch src/sub2/b
92 WVPASS bup index -u src --exclude-rx "^$(pwd)/src/sub1/"
93 WVPASS bup save --strip -n bupdir src
94 WVPASS bup restore -C buprestore.tmp /bupdir/latest/
95 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
102 WVSTART "index --exclude-rx '/foo$' (non-dir, tail anchor)"
103 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
110 WVPASS mkdir src/sub/foo
111 WVPASS touch src/sub/foo/a
112 WVPASS bup index -u src --exclude-rx '/foo$'
113 WVPASS bup save --strip -n bupdir src
114 WVPASS bup restore -C buprestore.tmp /bupdir/latest/
115 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
116 WVPASSEQ "$actual" ".
123 WVSTART "index --exclude-rx '/foo/$' (dir, tail anchor)"
124 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
131 WVPASS mkdir src/sub/foo
132 WVPASS touch src/sub/foo/a
133 WVPASS bup index -u src --exclude-rx '/foo/$'
134 WVPASS bup save --strip -n bupdir src
135 WVPASS bup restore -C buprestore.tmp /bupdir/latest/
136 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
137 WVPASSEQ "$actual" ".
143 WVSTART "index --exclude-rx '/foo/.' (dir content)"
144 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
151 WVPASS mkdir src/sub/foo
152 WVPASS touch src/sub/foo/a
153 WVPASS bup index -u src --exclude-rx '/foo/.'
154 WVPASS bup save --strip -n bupdir src
155 WVPASS bup restore -C buprestore.tmp /bupdir/latest/
156 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
157 WVPASSEQ "$actual" ".
165 # bup index --exclude-rx-from ...
166 # ===============================
167 WVSTART "index --exclude-rx-from"
168 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
173 WVPASS mkdir src/sub1
174 WVPASS mkdir src/sub2
175 WVPASS touch src/sub1/a
176 WVPASS touch src/sub2/b
177 # exclude-rx-file includes blank lines to check that we ignore them.
178 WVPASS echo "^$(pwd)/src/sub1/
181 WVPASS bup index -u src --exclude-rx-from exclude-rx-file
182 WVPASS bup save --strip -n bupdir src
183 WVPASS bup restore -C buprestore.tmp /bupdir/latest/
184 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
185 WVPASSEQ "$actual" ".
192 # bup restore --exclude-rx ...
193 # ============================
195 WVSTART "restore --exclude-rx '^/foo' (root anchor)"
196 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
201 WVPASS mkdir src/sub1
202 WVPASS mkdir src/sub2
203 WVPASS touch src/sub1/a
204 WVPASS touch src/sub2/b
205 WVPASS bup index -u src
206 WVPASS bup save --strip -n bupdir src
207 WVPASS bup restore -C buprestore.tmp --exclude-rx "^/sub1/" /bupdir/latest/
208 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
209 WVPASSEQ "$actual" ".
215 WVSTART "restore --exclude-rx '/foo$' (non-dir, tail anchor)"
216 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
223 WVPASS mkdir src/sub/foo
224 WVPASS touch src/sub/foo/a
225 WVPASS bup index -u src
226 WVPASS bup save --strip -n bupdir src
227 WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo$' /bupdir/latest/
228 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
229 WVPASSEQ "$actual" ".
236 WVSTART "restore --exclude-rx '/foo/$' (dir, tail anchor)"
237 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
244 WVPASS mkdir src/sub/foo
245 WVPASS touch src/sub/foo/a
246 WVPASS bup index -u src
247 WVPASS bup save --strip -n bupdir src
248 WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo/$' /bupdir/latest/
249 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
250 WVPASSEQ "$actual" ".
256 WVSTART "restore --exclude-rx '/foo/.' (dir content)"
257 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
264 WVPASS mkdir src/sub/foo
265 WVPASS touch src/sub/foo/a
266 WVPASS bup index -u src
267 WVPASS bup save --strip -n bupdir src
268 WVPASS bup restore -C buprestore.tmp --exclude-rx '/foo/.' /bupdir/latest/
269 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
270 WVPASSEQ "$actual" ".
278 # bup restore --exclude-rx-from ...
279 # =================================
281 WVSTART "restore --exclude-rx-from"
282 WVPASS rm -rf src "$BUP_DIR" buprestore.tmp
287 WVPASS mkdir src/sub1
288 WVPASS mkdir src/sub2
289 WVPASS touch src/sub1/a
290 WVPASS touch src/sub2/b
291 WVPASS bup index -u src
292 WVPASS bup save --strip -n bupdir src
293 WVPASS echo "^/sub1/" > exclude-rx-file
294 WVPASS bup restore -C buprestore.tmp \
295 --exclude-rx-from exclude-rx-file /bupdir/latest/
296 actual="$(WVPASS cd buprestore.tmp; WVPASS find . | WVPASS sort)" || exit $?
297 WVPASSEQ "$actual" ".
303 WVPASS rm -rf "$tmpdir"