2 . ./wvtest-bup.sh || exit $?
3 . ./t/lib.sh || exit $?
7 root_status="$(t/root-status)" || exit $?
9 if [ "$root_status" != root ]; then
10 echo 'Not root: skipping --check-device tests.'
11 exit 0 # FIXME: add WVSKIP.
14 if test -n "$(type -p modprobe)" && ! modprobe loop; then
15 echo 'Unable to load loopback module; skipping --check-device test.' 1>&2
19 if test -z "$(type -p losetup)"; then
20 echo 'Unable to find losetup: skipping --check-device tests.' 1>&2
21 exit 0 # FIXME: add WVSKIP.
24 if test -z "$(type -p mke2fs)"; then
25 echo 'Unable to find mke2fs: skipping --check-device tests.' 1>&2
26 exit 0 # FIXME: add WVSKIP.
29 WVSTART '--check-device'
32 tmpdir="$(WVPASS wvmktempdir)" || exit $?
34 export BUP_DIR="$tmpdir/bup"
36 bup() { "$top/bup" "$@"; }
38 srcmnt="$(WVPASS wvmkmountpt)" || exit $?
39 tmpmnt1="$(WVPASS wvmkmountpt)" || exit $?
40 tmpmnt2="$(WVPASS wvmkmountpt)" || exit $?
44 WVPASS dd if=/dev/zero of=testfs.img bs=1M count=32
45 WVPASS mke2fs -F -j -m 0 testfs.img
46 WVPASS mount -o loop testfs.img "$tmpmnt1"
47 # Hide, so that tests can't create risks.
48 WVPASS chown root:root "$tmpmnt1"
49 WVPASS chmod 0700 "$tmpmnt1"
51 # Create trivial content.
52 WVPASS date > "$tmpmnt1/foo"
53 WVPASS umount "$tmpmnt1"
55 # Mount twice, so we'll have the same content with different devices.
56 WVPASS mount -oro,loop testfs.img "$tmpmnt1"
57 WVPASS mount -oro,loop testfs.img "$tmpmnt2"
59 # Test default behavior: --check-device.
60 WVPASS mount -oro --bind "$tmpmnt1" "$srcmnt"
62 WVPASS bup index --fake-valid "$srcmnt"
63 WVPASS umount "$srcmnt"
64 WVPASS mount -oro --bind "$tmpmnt2" "$srcmnt"
65 WVPASS bup index "$srcmnt"
66 WVPASSEQ "$(bup index --status "$srcmnt")" \
67 "M $srcmnt/lost+found/
70 WVPASS umount "$srcmnt"
72 WVSTART '--no-check-device'
73 WVPASS mount -oro --bind "$tmpmnt1" "$srcmnt"
74 WVPASS bup index --clear
75 WVPASS bup index --fake-valid "$srcmnt"
76 WVPASS umount "$srcmnt"
77 WVPASS mount -oro --bind "$tmpmnt2" "$srcmnt"
78 WVPASS bup index --no-check-device "$srcmnt"
79 WVPASS bup index --status "$srcmnt"
80 WVPASSEQ "$(bup index --status "$srcmnt")" \
85 WVPASS umount "$srcmnt"
86 WVPASS umount "$tmpmnt1"
87 WVPASS umount "$tmpmnt2"
88 WVPASS rm -r "$tmpmnt1" "$tmpmnt2" "$tmpdir"