summaryrefslogtreecommitdiffstats
path: root/tests/bsd
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-05-07 15:42:46 -0400
committerTavian Barnes <tavianator@tavianator.com>2024-05-07 15:42:46 -0400
commit452d6697e0f92326ab139eed4eadd9c2fd8b55ca (patch)
tree0feeb3722dcf6debb6c33c5175342bf1d70a1dba /tests/bsd
parenta4299f9bc1d3e60a7e628561e8d650c2a241e1c2 (diff)
parentc5cf2cf90834f2f56b2940d2a499a1a614ebfd21 (diff)
downloadbfs-find2fd.tar.xz
Merge branch 'main' into find2fdfind2fd
Diffstat (limited to 'tests/bsd')
-rw-r--r--tests/bsd/L_acl.out4
-rw-r--r--tests/bsd/L_acl.sh12
-rw-r--r--tests/bsd/L_xattr.out6
-rw-r--r--tests/bsd/L_xattr.sh6
-rw-r--r--tests/bsd/L_xattrname.out4
-rw-r--r--tests/bsd/L_xattrname.sh8
-rw-r--r--tests/bsd/X.sh3
-rw-r--r--tests/bsd/acl.out2
-rw-r--r--tests/bsd/acl.sh12
-rw-r--r--tests/bsd/exit.sh10
-rw-r--r--tests/bsd/f_incomplete.sh3
-rw-r--r--tests/bsd/flags.out2
-rw-r--r--tests/bsd/flags.sh10
-rw-r--r--tests/bsd/mtime_bad_unit.sh2
-rw-r--r--tests/bsd/mtime_missing_unit.sh2
-rw-r--r--tests/bsd/rm.out2
-rw-r--r--tests/bsd/rm.sh10
-rw-r--r--tests/bsd/s_quit.out1
-rw-r--r--tests/bsd/s_quit.sh4
-rw-r--r--tests/bsd/sparse.out1
-rw-r--r--tests/bsd/sparse.sh12
-rw-r--r--tests/bsd/type_w.out34
-rw-r--r--tests/bsd/type_w.sh56
-rw-r--r--tests/bsd/xattr.out6
-rw-r--r--tests/bsd/xattr.sh6
-rw-r--r--tests/bsd/xattrname.out4
-rw-r--r--tests/bsd/xattrname.sh8
27 files changed, 164 insertions, 66 deletions
diff --git a/tests/bsd/L_acl.out b/tests/bsd/L_acl.out
index 1dae00a..dd89800 100644
--- a/tests/bsd/L_acl.out
+++ b/tests/bsd/L_acl.out
@@ -1,2 +1,2 @@
-scratch/acl
-scratch/link
+./acl
+./link
diff --git a/tests/bsd/L_acl.sh b/tests/bsd/L_acl.sh
index cf573e4..a3fcbc8 100644
--- a/tests/bsd/L_acl.sh
+++ b/tests/bsd/L_acl.sh
@@ -1,9 +1,9 @@
-clean_scratch
+cd "$TEST"
-skip_unless invoke_bfs scratch -quit -acl
+invoke_bfs . -quit -acl || skip
-"$XTOUCH" scratch/{normal,acl}
-skip_unless set_acl scratch/acl
-ln -s acl scratch/link
+"$XTOUCH" normal acl
+set_acl acl || skip
+ln -s acl link
-bfs_diff -L scratch -acl
+bfs_diff -L . -acl
diff --git a/tests/bsd/L_xattr.out b/tests/bsd/L_xattr.out
index 12fac95..21eb50f 100644
--- a/tests/bsd/L_xattr.out
+++ b/tests/bsd/L_xattr.out
@@ -1,3 +1,3 @@
-scratch/link
-scratch/xattr
-scratch/xattr_2
+./link
+./xattr
+./xattr_2
diff --git a/tests/bsd/L_xattr.sh b/tests/bsd/L_xattr.sh
index 7c27e0d..f8b56d8 100644
--- a/tests/bsd/L_xattr.sh
+++ b/tests/bsd/L_xattr.sh
@@ -1,3 +1,3 @@
-skip_unless invoke_bfs scratch -quit -xattr
-skip_unless make_xattrs
-bfs_diff -L scratch -xattr
+invoke_bfs . -quit -xattr || skip
+make_xattrs || skip
+bfs_diff -L . -xattr
diff --git a/tests/bsd/L_xattrname.out b/tests/bsd/L_xattrname.out
index 4dc4836..9e4c172 100644
--- a/tests/bsd/L_xattrname.out
+++ b/tests/bsd/L_xattrname.out
@@ -1,2 +1,2 @@
-scratch/link
-scratch/xattr
+./link
+./xattr
diff --git a/tests/bsd/L_xattrname.sh b/tests/bsd/L_xattrname.sh
index 39d6a77..8108d57 100644
--- a/tests/bsd/L_xattrname.sh
+++ b/tests/bsd/L_xattrname.sh
@@ -1,11 +1,11 @@
-skip_unless invoke_bfs scratch -quit -xattr
-skip_unless make_xattrs
+invoke_bfs . -quit -xattr || skip
+make_xattrs || skip
case "$UNAME" in
Darwin|FreeBSD)
- bfs_diff -L scratch -xattrname bfs_test
+ bfs_diff -L . -xattrname bfs_test
;;
*)
- bfs_diff -L scratch -xattrname security.bfs_test
+ bfs_diff -L . -xattrname security.bfs_test
;;
esac
diff --git a/tests/bsd/X.sh b/tests/bsd/X.sh
index 03d9eee..54000cf 100644
--- a/tests/bsd/X.sh
+++ b/tests/bsd/X.sh
@@ -1,2 +1 @@
-bfs_diff -X weirdnames
-[ $? -eq $EX_BFS ]
+! bfs_diff -X weirdnames
diff --git a/tests/bsd/acl.out b/tests/bsd/acl.out
index ddf8446..92e2f67 100644
--- a/tests/bsd/acl.out
+++ b/tests/bsd/acl.out
@@ -1 +1 @@
-scratch/acl
+./acl
diff --git a/tests/bsd/acl.sh b/tests/bsd/acl.sh
index 1665684..a13c75f 100644
--- a/tests/bsd/acl.sh
+++ b/tests/bsd/acl.sh
@@ -1,9 +1,9 @@
-clean_scratch
+cd "$TEST"
-skip_unless invoke_bfs scratch -quit -acl
+invoke_bfs . -quit -acl || skip
-"$XTOUCH" scratch/{normal,acl}
-skip_unless set_acl scratch/acl
-ln -s acl scratch/link
+"$XTOUCH" normal acl
+set_acl acl || skip
+ln -s acl link
-bfs_diff scratch -acl
+bfs_diff . -acl
diff --git a/tests/bsd/exit.sh b/tests/bsd/exit.sh
index 524a75f..248349c 100644
--- a/tests/bsd/exit.sh
+++ b/tests/bsd/exit.sh
@@ -1,11 +1,5 @@
-invoke_bfs basic -name foo -exit 42
-if [ $? -ne 42 ]; then
- return 1
-fi
+check_exit 42 invoke_bfs basic -name foo -exit 42
-invoke_bfs basic -name qux -exit 42
-if [ $? -ne 0 ]; then
- return 1
-fi
+check_exit 0 invoke_bfs basic -name qux -exit 42
bfs_diff basic/g -print -name g -exit
diff --git a/tests/bsd/f_incomplete.sh b/tests/bsd/f_incomplete.sh
index acb63af..0dfb19f 100644
--- a/tests/bsd/f_incomplete.sh
+++ b/tests/bsd/f_incomplete.sh
@@ -1,2 +1 @@
-fail invoke_bfs -f
-
+! invoke_bfs -f
diff --git a/tests/bsd/flags.out b/tests/bsd/flags.out
index 11998ed..3216ff5 100644
--- a/tests/bsd/flags.out
+++ b/tests/bsd/flags.out
@@ -1 +1 @@
-scratch/bar
+./bar
diff --git a/tests/bsd/flags.sh b/tests/bsd/flags.sh
index ffb1cc2..eb9bc22 100644
--- a/tests/bsd/flags.sh
+++ b/tests/bsd/flags.sh
@@ -1,8 +1,8 @@
-skip_unless invoke_bfs scratch -quit -flags offline
+invoke_bfs . -quit -flags offline || skip
-clean_scratch
+cd "$TEST"
-"$XTOUCH" scratch/{foo,bar}
-skip_unless chflags offline scratch/bar
+"$XTOUCH" foo bar
+chflags offline bar || skip
-bfs_diff scratch -flags -offline,nohidden
+bfs_diff . -flags -offline,nohidden
diff --git a/tests/bsd/mtime_bad_unit.sh b/tests/bsd/mtime_bad_unit.sh
index 3921f80..6e2caf1 100644
--- a/tests/bsd/mtime_bad_unit.sh
+++ b/tests/bsd/mtime_bad_unit.sh
@@ -1 +1 @@
-fail invoke_bfs times -mtime +1q
+! invoke_bfs times -mtime +1q
diff --git a/tests/bsd/mtime_missing_unit.sh b/tests/bsd/mtime_missing_unit.sh
index 3ac4c97..f6b1f93 100644
--- a/tests/bsd/mtime_missing_unit.sh
+++ b/tests/bsd/mtime_missing_unit.sh
@@ -1 +1 @@
-fail invoke_bfs times -mtime +1w2
+! invoke_bfs times -mtime +1w2
diff --git a/tests/bsd/rm.out b/tests/bsd/rm.out
index fb188b9..9c558e3 100644
--- a/tests/bsd/rm.out
+++ b/tests/bsd/rm.out
@@ -1 +1 @@
-scratch
+.
diff --git a/tests/bsd/rm.sh b/tests/bsd/rm.sh
index 9ee2b0a..595d514 100644
--- a/tests/bsd/rm.sh
+++ b/tests/bsd/rm.sh
@@ -1,6 +1,4 @@
-clean_scratch
-"$XTOUCH" -p scratch/foo/bar/baz
-
-(cd scratch && invoke_bfs . -rm)
-
-bfs_diff scratch
+cd "$TEST"
+"$XTOUCH" -p foo/bar/baz
+invoke_bfs . -rm
+bfs_diff .
diff --git a/tests/bsd/s_quit.out b/tests/bsd/s_quit.out
new file mode 100644
index 0000000..5ea492b
--- /dev/null
+++ b/tests/bsd/s_quit.out
@@ -0,0 +1 @@
+basic/j/foo
diff --git a/tests/bsd/s_quit.sh b/tests/bsd/s_quit.sh
new file mode 100644
index 0000000..6bd55ab
--- /dev/null
+++ b/tests/bsd/s_quit.sh
@@ -0,0 +1,4 @@
+# Regression test: bfs -S ids -s -name foo -quit would not actually quit,
+# ending up in a confused state and erroring/crashing
+
+bfs_diff -s basic -name foo -print -quit
diff --git a/tests/bsd/sparse.out b/tests/bsd/sparse.out
new file mode 100644
index 0000000..52dcf49
--- /dev/null
+++ b/tests/bsd/sparse.out
@@ -0,0 +1 @@
+mnt/sparse
diff --git a/tests/bsd/sparse.sh b/tests/bsd/sparse.sh
new file mode 100644
index 0000000..7fcdeed
--- /dev/null
+++ b/tests/bsd/sparse.sh
@@ -0,0 +1,12 @@
+test "$UNAME" = "Linux" || skip
+
+cd "$TEST"
+mkdir mnt
+
+bfs_sudo mount -t tmpfs tmpfs mnt || skip
+defer bfs_sudo umount mnt
+
+truncate -s 1M mnt/sparse
+dd if=/dev/zero of=mnt/dense bs=1M count=1
+
+bfs_diff mnt -type f -sparse
diff --git a/tests/bsd/type_w.out b/tests/bsd/type_w.out
new file mode 100644
index 0000000..a20a4f3
--- /dev/null
+++ b/tests/bsd/type_w.out
@@ -0,0 +1,34 @@
+1: -rw-r--r-- mnt/lower/bar
+1: -rw-r--r-- mnt/lower/baz
+1: -rw-r--r-- mnt/lower/foo
+1: -rw-r--r-- mnt/upper/baz/qux
+1: -rw-r--r-- mnt/upper/foo
+1: drwxr-xr-x mnt/lower
+1: drwxr-xr-x mnt/upper
+1: drwxr-xr-x mnt/upper/baz
+2: w--------- mnt/upper/bar
+3: -rw-r--r-- mnt/lower/bar
+3: -rw-r--r-- mnt/lower/baz
+3: -rw-r--r-- mnt/lower/foo
+3: -rw-r--r-- mnt/upper/baz/qux
+3: -rw-r--r-- mnt/upper/foo
+3: drwxr-xr-x mnt/lower
+3: drwxr-xr-x mnt/upper
+3: drwxr-xr-x mnt/upper/baz
+3: w--------- mnt/upper/bar
+4: -rw-r--r-- mnt/lower/bar
+4: -rw-r--r-- mnt/lower/baz
+4: -rw-r--r-- mnt/lower/foo
+4: -rw-r--r-- mnt/upper/baz/qux
+4: drwxr-xr-x mnt/lower
+4: drwxr-xr-x mnt/upper
+4: drwxr-xr-x mnt/upper/baz
+5: w--------- mnt/upper/bar
+6: -rw-r--r-- mnt/lower/bar
+6: -rw-r--r-- mnt/lower/baz
+6: -rw-r--r-- mnt/lower/foo
+6: -rw-r--r-- mnt/upper/baz/qux
+6: drwxr-xr-x mnt/lower
+6: drwxr-xr-x mnt/upper
+6: drwxr-xr-x mnt/upper/baz
+6: w--------- mnt/upper/bar
diff --git a/tests/bsd/type_w.sh b/tests/bsd/type_w.sh
new file mode 100644
index 0000000..3aa50d5
--- /dev/null
+++ b/tests/bsd/type_w.sh
@@ -0,0 +1,56 @@
+# Only ffs supports whiteouts on FreeBSD
+command -v mdconfig &>/dev/null || skip
+command -v newfs &>/dev/null || skip
+
+cd "$TEST"
+
+# Create a ramdisk
+if command -v truncate &>/dev/null; then
+ truncate -s1M img
+else
+ dd if=/dev/zero of=img bs=1k count=1k
+fi
+md=$(bfs_sudo mdconfig img) || skip
+defer bfs_sudo mdconfig -du "$md"
+
+# Make an ffs filesystem
+bfs_sudo newfs -n "/dev/$md" >&2 || skip
+mkdir mnt
+
+# Mount it
+bfs_sudo mount "/dev/$md" mnt || skip
+defer bfs_sudo umount mnt
+
+# Make it owned by us
+bfs_sudo chown "$(id -u):$(id -g)" mnt
+"$XTOUCH" -p mnt/{lower/{foo,bar,baz},upper/{bar,baz/qux}}
+
+# Mount a union filesystem within it
+bfs_sudo mount -t unionfs -o below mnt/{lower,upper}
+defer bfs_sudo umount mnt/upper
+
+# Create a whiteout
+rm mnt/upper/bar
+
+# FreeBSD find doesn't have -printf, so munge -ls output
+munge_ls() {
+ sed -En 's|.*([-drwx]{10}).*(mnt/.*)|'"$1"': \1 \2|p'
+}
+
+# Do a few tests in one
+{
+ # Normally, we shouldn't see the whiteouts
+ invoke_bfs mnt -ls | munge_ls 1
+ # -type w adds whiteouts to the output
+ invoke_bfs mnt -type w -ls | munge_ls 2
+ # So this is not the same as test 1
+ invoke_bfs mnt \( -type w -or -not -type w \) -ls | munge_ls 3
+ # Unmount the unionfs
+ pop_defer
+ # Now repeat the same tests
+ invoke_bfs mnt -ls | munge_ls 4
+ invoke_bfs mnt -type w -ls | munge_ls 5
+ invoke_bfs mnt \( -type w -or -not -type w \) -ls | munge_ls 6
+} >"$OUT"
+sort_output
+diff_output
diff --git a/tests/bsd/xattr.out b/tests/bsd/xattr.out
index 109e7c9..0afed35 100644
--- a/tests/bsd/xattr.out
+++ b/tests/bsd/xattr.out
@@ -1,3 +1,3 @@
-scratch/xattr
-scratch/xattr_2
-scratch/xattr_link
+./xattr
+./xattr_2
+./xattr_link
diff --git a/tests/bsd/xattr.sh b/tests/bsd/xattr.sh
index 727c220..68f729a 100644
--- a/tests/bsd/xattr.sh
+++ b/tests/bsd/xattr.sh
@@ -1,3 +1,3 @@
-skip_unless invoke_bfs scratch -quit -xattr
-skip_unless make_xattrs
-bfs_diff scratch -xattr
+invoke_bfs . -quit -xattr || skip
+make_xattrs || skip
+bfs_diff . -xattr
diff --git a/tests/bsd/xattrname.out b/tests/bsd/xattrname.out
index 0285ac1..ef732bd 100644
--- a/tests/bsd/xattrname.out
+++ b/tests/bsd/xattrname.out
@@ -1,2 +1,2 @@
-scratch/xattr
-scratch/xattr_link
+./xattr
+./xattr_link
diff --git a/tests/bsd/xattrname.sh b/tests/bsd/xattrname.sh
index 6a0fe7e..38b111a 100644
--- a/tests/bsd/xattrname.sh
+++ b/tests/bsd/xattrname.sh
@@ -1,11 +1,11 @@
-skip_unless invoke_bfs scratch -quit -xattr
-skip_unless make_xattrs
+invoke_bfs . -quit -xattr || skip
+make_xattrs || skip
case "$UNAME" in
Darwin|FreeBSD)
- bfs_diff scratch -xattrname bfs_test
+ bfs_diff . -xattrname bfs_test
;;
*)
- bfs_diff scratch -xattrname security.bfs_test
+ bfs_diff . -xattrname security.bfs_test
;;
esac