summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2016-12-18 18:11:27 -0500
committerTavian Barnes <tavianator@tavianator.com>2016-12-18 18:11:27 -0500
commite319411a3f2f4e82f3519cc1a1f45e7153a5e2af (patch)
treef1dcc4275667ac0faf2e685f454e92a8e5266a95
parent3236cb74acf38132d356c982c148177b81a6d607 (diff)
downloadbfs-e319411a3f2f4e82f3519cc1a1f45e7153a5e2af.tar.xz
tests: Allow limiting the testsuite to POSIX, BSD, GNU, and bfs-specific features
-rwxr-xr-xtests.sh139
-rw-r--r--tests/test_0072.out2
-rw-r--r--tests/test_0107.out19
-rw-r--r--tests/test_0108.out19
-rw-r--r--tests/test_0109.out4
-rw-r--r--tests/test_0110.out1
-rw-r--r--tests/test_0111.out15
7 files changed, 188 insertions, 11 deletions
diff --git a/tests.sh b/tests.sh
index a532f98..b1672e6 100755
--- a/tests.sh
+++ b/tests.sh
@@ -2,6 +2,8 @@
set -o physical
+export LC_ALL=C
+
# The temporary directory that will hold our test data
TMP="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.XXXXXXXXXX)"
chown "$(id -u)":"$(id -g)" "$TMP"
@@ -83,6 +85,7 @@ function make_weirdnames() {
touchp "$1/!-/e"
touchp "$1/,/f"
touchp "$1/)/g"
+ touchp "$1/.../h"
}
make_weirdnames "$TMP/weirdnames"
@@ -99,18 +102,40 @@ function _realpath() {
)
}
-export LC_ALL=C
-
BFS="$(_realpath ./bfs)"
TESTS="$(_realpath ./tests)"
+BSD=yes
+GNU=yes
+ALL=yes
+
for arg; do
case "$arg" in
--bfs=*)
BFS="${arg#*=}"
;;
+ --posix)
+ BSD=
+ GNU=
+ ALL=
+ ;;
+ --bsd)
+ BSD=yes
+ GNU=
+ ALL=
+ ;;
+ --gnu)
+ BSD=
+ GNU=yes
+ ALL=
+ ;;
+ --all)
+ BSD=yes
+ GNU=yes
+ ALL=yes
+ ;;
--update)
- UPDATE=update
+ UPDATE=yes
;;
*)
echo "Unrecognized option '$arg'." >&2
@@ -181,42 +206,52 @@ function test_0011() {
}
function test_0012() {
+ [ "$GNU" ] || return 0
bfs_diff perms -executable
}
function test_0013() {
+ [ "$GNU" ] || return 0
bfs_diff perms -readable
}
function test_0014() {
+ [ "$GNU" ] || return 0
bfs_diff perms -writable
}
function test_0015() {
+ [ "$GNU" ] || return 0
bfs_diff basic -empty
}
function test_0016() {
+ [ "$GNU" ] || return 0
bfs_diff basic -gid "$(id -g)"
}
function test_0017() {
+ [ "$GNU" ] || return 0
bfs_diff basic -gid +0
}
function test_0018() {
+ [ "$GNU" ] || return 0
bfs_diff basic -gid "-$(($(id -g) + 1))"
}
function test_0019() {
+ [ "$GNU" ] || return 0
bfs_diff basic -uid "$(id -u)"
}
function test_0020() {
+ [ "$GNU" ] || return 0
bfs_diff basic -uid +0
}
function test_0021() {
+ [ "$GNU" ] || return 0
bfs_diff basic -uid "-$(($(id -u) + 1))"
}
@@ -225,6 +260,7 @@ function test_0022() {
}
function test_0023() {
+ [ "$GNU" ] || return 0
bfs_diff times -anewer times/a
}
@@ -269,6 +305,7 @@ function test_0033() {
}
function test_0034() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff links -follow 2>/dev/null
}
@@ -277,22 +314,27 @@ function test_0035() {
}
function test_0036() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff links -samefile links/a
}
function test_0037() {
+ [ "$GNU" ] || return 0
bfs_diff links -xtype l
}
function test_0038() {
+ [ "$GNU" ] || return 0
bfs_diff links -xtype f
}
function test_0039() {
+ [ "$GNU" ] || return 0
bfs_diff -L links -xtype l 2>/dev/null
}
function test_0040() {
+ [ "$GNU" ] || return 0
bfs_diff -L links -xtype f 2>/dev/null
}
@@ -305,34 +347,42 @@ function test_0042() {
}
function test_0043() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff / -maxdepth 0 -name / 2>/dev/null
}
function test_0044() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff /// -maxdepth 0 -name / 2>/dev/null
}
function test_0045() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -iname '*F*'
}
function test_0046() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -ipath 'basic/*F*'
}
function test_0047() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff links -lname '[aq]'
}
function test_0048() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff links -ilname '[AQ]'
}
function test_0049() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff -L links -lname '[aq]' 2>/dev/null
}
function test_0050() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff -L links -ilname '[AQ]' 2>/dev/null
}
@@ -353,14 +403,17 @@ function test_0054() {
}
function test_0055() {
+ [ "$GNU" ] || return 0
bfs_diff basic -daystart -mtime 0
}
function test_0056() {
+ [ "$GNU" ] || return 0
bfs_diff basic -daystart -daystart -mtime 0
}
function test_0057() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff times -newerma times/a
}
@@ -377,6 +430,7 @@ function test_0060() {
}
function test_0061() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -size 9223372036854775807
}
@@ -385,20 +439,25 @@ function test_0062() {
}
function test_0063() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -exec echo '-{}-' ';'
}
function test_0064() {
+ [ "$BSD" -o "$GNU" ] || return 0
+
local TMP_REAL="$(cd "$TMP" && pwd)"
local OFFSET="$((${#TMP_REAL} + 2))"
bfs_diff basic -execdir bash -c "pwd | cut -b$OFFSET-" ';'
}
function test_0065() {
+ [ "$GNU" ] || return 0
bfs_diff basic -execdir echo '{}' ';'
}
function test_0066() {
+ [ "$GNU" ] || return 0
bfs_diff basic -execdir echo '-{}-' ';'
}
@@ -407,30 +466,35 @@ function test_0067() {
}
function test_0068() {
+ [ "$GNU" ] || return 0
bfs_diff basic -name '*f*' -print , -print
}
function test_0069() {
+ [ "$GNU" ] || return 0
cd weirdnames
bfs_diff '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \)
}
function test_0070() {
+ [ "$GNU" ] || return 0
cd weirdnames
bfs_diff -L '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \)
}
function test_0071() {
cd weirdnames
- bfs_diff -L ',' -true
+ bfs_diff -L ',' -print
}
function test_0072() {
+ [ "$GNU" ] || return 0
cd weirdnames
- bfs_diff -follow ',' -true
+ bfs_diff -follow ',' -print
}
function test_0073() {
+ [ "$GNU" ] || return 0
if [ "$UPDATE" ]; then
$BFS basic -fprint "$TESTS/test_0073.out"
sort -o "$TESTS/test_0073.out" "$TESTS/test_0073.out"
@@ -442,21 +506,27 @@ function test_0073() {
}
function test_0074() {
+ [ "$BSD" -o "$GNU" ] || return 0
cd basic
- bfs_diff -- -type f
+ bfs_diff -- . -type f
}
function test_0075() {
+ [ "$BSD" -o "$GNU" ] || return 0
cd basic
- bfs_diff -L -- -type f
+ bfs_diff -L -- . -type f
}
function test_0076() {
+ [ "$GNU" ] || return 0
+
# Make sure -ignore_readdir_race doesn't suppress ENOENT at the root
! $BFS basic/nonexistent -ignore_readdir_race 2>/dev/null
}
function test_0077() {
+ [ "$GNU" ] || return 0
+
rm -rf scratch/*
touch scratch/{foo,bar}
@@ -473,6 +543,7 @@ function test_0079() {
}
function test_0080() {
+ [ "$GNU" ] || return 0
bfs_diff perms -perm /222
}
@@ -485,6 +556,7 @@ function test_0082() {
}
function test_0083() {
+ [ "$GNU" ] || return 0
bfs_diff perms -perm /644
}
@@ -497,18 +569,22 @@ function test_0085() {
}
function test_0086() {
+ [ "$GNU" ] || return 0
bfs_diff perms -perm /a+r,u=wX,g+wX-w
}
function test_0087() {
+ [ "$ALL" ] || return 0
! $BFS perms -perm a+r, 2>/dev/null
}
function test_0088() {
+ [ "$ALL" ] || return 0
! $BFS perms -perm a+r,,u+w 2>/dev/null
}
function test_0089() {
+ [ "$ALL" ] || return 0
! $BFS perms -perm a 2>/dev/null
}
@@ -517,23 +593,28 @@ function test_0090() {
}
function test_0091() {
+ [ "$GNU" ] || return 0
bfs_diff perms -perm /+rwx
}
function test_0092() {
+ [ "$ALL" ] || return 0
bfs_diff perms -perm +rwx
}
function test_0093() {
+ [ "$ALL" ] || return 0
! $BFS perms -perm +777 2>/dev/null
}
function test_0094() {
+ [ "$GNU" ] || return 0
# -ok should close stdin for the executed command
yes | $BFS basic -ok cat ';' 2>/dev/null
}
function test_0095() {
+ [ "$GNU" ] || return 0
# -okdir should close stdin for the executed command
yes | $BFS basic -okdir cat ';' 2>/dev/null
}
@@ -543,54 +624,90 @@ function test_0096() {
}
function test_0097() {
+ [ "$BSD" -o "$GNU" ] || return 0
# Don't try to delete '.'
- (cd scratch && $BFS -delete)
+ (cd scratch && $BFS . -delete)
}
function test_0098() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff / -maxdepth 0 -execdir pwd ';'
}
function test_0099() {
+ [ "$BSD" -o "$GNU" ] || return 0
# Don't prepend ./ for absolute paths in -execdir
bfs_diff / -maxdepth 0 -execdir echo '{}' ';'
}
function test_0100() {
+ [ "$ALL" ] || return 0
bfs_diff /// -maxdepth 0 -execdir echo '{}' ';'
}
function test_0101() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -regex 'basic/./.'
}
function test_0102() {
+ [ "$BSD" -o "$GNU" ] || return 0
bfs_diff basic -iregex 'basic/[A-Z]/[a-z]'
}
function test_0103() {
+ [ "$BSD" -o "$GNU" ] || return 0
cd weirdnames
- bfs_diff -regex '\./\((\)'
+ bfs_diff . -regex '\./\((\)'
}
function test_0104() {
+ [ "$BSD" ] || return 0
cd weirdnames
- bfs_diff -E -regex '\./(\()'
+ bfs_diff -E . -regex '\./(\()'
}
function test_0105() {
+ [ "$GNU" ] || return 0
cd weirdnames
bfs_diff -regextype posix-basic -regex '\./\((\)'
}
function test_0106() {
+ [ "$GNU" ] || return 0
cd weirdnames
bfs_diff -regextype posix-extended -regex '\./(\()'
}
+function test_0107() {
+ [ "$BSD" ] || return 0
+ bfs_diff -d basic
+}
+
+function test_0108() {
+ [ "$GNU" ] || return 0
+ bfs_diff basic -d 2>/dev/null
+}
+
+function test_0109() {
+ [ "$BSD" ] || return 0
+ cd weirdnames
+ bfs_diff -f '-' -f '('
+}
+
+function test_0110() {
+ [ "$ALL" ] || return 0
+ bfs_diff weirdnames -hidden
+}
+
+function test_0111() {
+ [ "$ALL" ] || return 0
+ bfs_diff weirdnames -nohidden
+}
+
result=0
-for i in {1..106}; do
+for i in {1..111}; do
test="test_$(printf '%04d' $i)"
if [ -t 1 ]; then
diff --git a/tests/test_0072.out b/tests/test_0072.out
index d4fb943..a4d5860 100644
--- a/tests/test_0072.out
+++ b/tests/test_0072.out
@@ -6,6 +6,7 @@
./)
./,
./-
+./...
./!-/e
./!/d
./(-/c
@@ -13,3 +14,4 @@
./)/g
./,/f
./-/a
+./.../h
diff --git a/tests/test_0107.out b/tests/test_0107.out
new file mode 100644
index 0000000..bb3cd8d
--- /dev/null
+++ b/tests/test_0107.out
@@ -0,0 +1,19 @@
+basic
+basic/a
+basic/b
+basic/c
+basic/e
+basic/g
+basic/i
+basic/j
+basic/k
+basic/l
+basic/c/d
+basic/e/f
+basic/g/h
+basic/j/foo
+basic/k/foo
+basic/l/foo
+basic/k/foo/bar
+basic/l/foo/bar
+basic/l/foo/bar/baz
diff --git a/tests/test_0108.out b/tests/test_0108.out
new file mode 100644
index 0000000..bb3cd8d
--- /dev/null
+++ b/tests/test_0108.out
@@ -0,0 +1,19 @@
+basic
+basic/a
+basic/b
+basic/c
+basic/e
+basic/g
+basic/i
+basic/j
+basic/k
+basic/l
+basic/c/d
+basic/e/f
+basic/g/h
+basic/j/foo
+basic/k/foo
+basic/l/foo
+basic/k/foo/bar
+basic/l/foo/bar
+basic/l/foo/bar/baz
diff --git a/tests/test_0109.out b/tests/test_0109.out
new file mode 100644
index 0000000..2998538
--- /dev/null
+++ b/tests/test_0109.out
@@ -0,0 +1,4 @@
+(
+-
+(/b
+-/a
diff --git a/tests/test_0110.out b/tests/test_0110.out
new file mode 100644
index 0000000..e65ede9
--- /dev/null
+++ b/tests/test_0110.out
@@ -0,0 +1 @@
+weirdnames/...
diff --git a/tests/test_0111.out b/tests/test_0111.out
new file mode 100644
index 0000000..e505d02
--- /dev/null
+++ b/tests/test_0111.out
@@ -0,0 +1,15 @@
+weirdnames
+weirdnames/!
+weirdnames/!-
+weirdnames/(
+weirdnames/(-
+weirdnames/)
+weirdnames/,
+weirdnames/-
+weirdnames/!-/e
+weirdnames/!/d
+weirdnames/(-/c
+weirdnames/(/b
+weirdnames/)/g
+weirdnames/,/f
+weirdnames/-/a