diff options
88 files changed, 1011 insertions, 142 deletions
@@ -1,5 +1,14 @@ #!/bin/bash +# The temporary directory that will hold our test data +TMP="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.XXXXXXXXXX)" + +# Clean up temporary directories on exit +function cleanup() { + rm -rf "$TMP" +} +trap cleanup EXIT + # Like a mythical touch -p function touchp() { install -Dm644 /dev/null "$1" @@ -17,9 +26,7 @@ function make_basic() { touchp "$1/k/foo/bar" touchp "$1/l/foo/bar/baz" } - -basic="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.basic.XXXXXXXXXX)" -make_basic "$basic" +make_basic "$TMP/basic" # Creates a file+directory structure with various permissions for tests function make_perms() { @@ -30,9 +37,7 @@ function make_perms() { install -Dm311 /dev/null "$1/wx" install -Dm755 /dev/null "$1/rwx" } - -perms="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.perms.XXXXXXXXXX)" -make_perms "$perms" +make_perms "$TMP/perms" # Creates a file+directory structure with various symbolic and hard links function make_links() { @@ -44,9 +49,19 @@ function make_links() { ln -s d/e "$1/h" ln -s q "$1/d/e/i" } +make_links "$TMP/links" -links="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.links.XXXXXXXXXX)" -make_links "$links" +# Creates a file+directory structure with varying timestamps +function make_times() { + mkdir -p "$1" + touch -t 199112140000 "$1/a" + touch -t 199112140001 "$1/b" + touch -t 199112140002 "$1/c" + ln -s a "$1/l" + touch -h -t 199112140003 "$1/l" + touch -t 199112140004 "$1" +} +make_times "$TMP/times" # Creates a file+directory structure with various weird file/directory names function make_weirdnames() { @@ -58,22 +73,13 @@ function make_weirdnames() { touchp "$1/,/f" touchp "$1/)/g" } +make_weirdnames "$TMP/weirdnames" -weirdnames="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.weirdnames.XXXXXXXXXX)" -make_weirdnames "$weirdnames" - -# Create a scratch directory that tests can modify -scratch="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.weirdnames.XXXXXXXXXX)" - -# Clean up temporary directories on exit -function cleanup() { - rm -rf "$scratch" - rm -rf "$weirdnames" - rm -rf "$links" - rm -rf "$perms" - rm -rf "$basic" +# Creates a scratch directory that tests can modify +function make_scratch() { + mkdir -p "$1" } -trap cleanup EXIT +make_scratch "$TMP/scratch" function _realpath() { ( @@ -83,377 +89,440 @@ function _realpath() { } BFS="$(_realpath ./bfs)" +TESTS="$(_realpath ./tests)" + +if [ "$1" == "update" ]; then + UPDATE="update" +fi -# Checks for any (order-independent) differences between bfs and find -function find_diff() { - diff -u <("$BFS" "$@" | sort) <(find "$@" | sort) +function bfs_sort() { + LC_ALL=C awk -F/ '{ print NF - 1 " " $0 }' | sort -n | awk '{ print $2 }' } +function bfs_diff() { + local OUT="$TESTS/${FUNCNAME[1]}.out" + if [ "$UPDATE" ]; then + "$BFS" "$@" | bfs_sort >"$OUT" + else + diff -u "$OUT" <("$BFS" "$@" | bfs_sort) + fi +} + +cd "$TMP" + # Test cases function test_0001() { - find_diff "$basic" + bfs_diff basic } function test_0002() { - find_diff "$basic" -type d + bfs_diff basic -type d } function test_0003() { - find_diff "$basic" -type f + bfs_diff basic -type f } function test_0004() { - find_diff "$basic" -mindepth 1 + bfs_diff basic -mindepth 1 } function test_0005() { - find_diff "$basic" -maxdepth 1 + bfs_diff basic -maxdepth 1 } function test_0006() { - find_diff "$basic" -mindepth 1 -depth + bfs_diff basic -mindepth 1 -depth } function test_0007() { - find_diff "$basic" -mindepth 2 -depth + bfs_diff basic -mindepth 2 -depth } function test_0008() { - find_diff "$basic" -maxdepth 1 -depth + bfs_diff basic -maxdepth 1 -depth } function test_0009() { - find_diff "$basic" -maxdepth 2 -depth + bfs_diff basic -maxdepth 2 -depth } function test_0010() { - find_diff "$basic" -name '*f*' + bfs_diff basic -name '*f*' } function test_0011() { - find_diff "$basic" -path "$basic/*f*" + bfs_diff basic -path 'basic/*f*' } function test_0012() { - find_diff "$perms" -executable + bfs_diff perms -executable } function test_0013() { - find_diff "$perms" -readable + bfs_diff perms -readable } function test_0014() { - find_diff "$perms" -writable + bfs_diff perms -writable } function test_0015() { - find_diff "$basic" -empty + bfs_diff basic -empty } function test_0016() { - find_diff "$basic" -gid "$(id -g)" && \ - find_diff "$basic" -gid +0 && \ - find_diff "$basic" -gid -10000 + bfs_diff basic -gid "$(id -g)" } function test_0017() { - find_diff "$basic" -uid "$(id -u)" && \ - find_diff "$basic" -uid +0 && \ - find_diff "$basic" -uid -10000 + bfs_diff basic -gid +0 } function test_0018() { - find_diff "$basic" -newer "$basic/e/f" + bfs_diff basic -gid "-$(($(id -g) + 1))" } function test_0019() { - find_diff "$basic" -cnewer "$basic/e/f" + bfs_diff basic -uid "$(id -u)" } function test_0020() { - find_diff "$links" -links 2 && \ - find_diff "$links" -links -2 && \ - find_diff "$links" -links +1 + bfs_diff basic -uid +0 } function test_0021() { - find_diff -P "$links/d/e/f" && \ - find_diff -P "$links/d/e/f/" + bfs_diff basic -uid "-$(($(id -u) + 1))" } function test_0022() { - find_diff -H "$links/d/e/f" && \ - find_diff -H "$links/d/e/f/" + bfs_diff times -newer times/a } function test_0023() { - find_diff -H "$links" -newer "$links/d/e/f" + bfs_diff times -anewer times/a } function test_0024() { - find_diff -H "$links/d/e/i" + bfs_diff links -links 2 } function test_0025() { - find_diff -L "$links" 2>/dev/null + bfs_diff links -links -2 } function test_0026() { - find_diff "$links" -follow 2>/dev/null + bfs_diff links -links +1 } function test_0027() { - find_diff -L "$links" -depth 2>/dev/null + bfs_diff -P links/d/e/f } function test_0028() { - find_diff "$links" -samefile "$links/a" + bfs_diff -P links/d/e/f/ } function test_0029() { - find_diff "$links" -xtype l + bfs_diff -H links/d/e/f } function test_0030() { - find_diff "$links" -xtype f + bfs_diff -H links/d/e/f/ } function test_0031() { - find_diff -L "$links" -xtype l 2>/dev/null + bfs_diff -H times -newer times/l } function test_0032() { - find_diff -L "$links" -xtype f 2>/dev/null + bfs_diff -H links/d/e/i } function test_0033() { - find_diff "$basic/a" -name 'a' + bfs_diff -L links 2>/dev/null } function test_0034() { - find_diff "$basic/g/" -name 'g' + bfs_diff links -follow 2>/dev/null } function test_0035() { - find_diff "/" -maxdepth 0 -name '/' 2>/dev/null + bfs_diff -L links -depth 2>/dev/null } function test_0036() { - find_diff "//" -maxdepth 0 -name '/' 2>/dev/null + bfs_diff links -samefile links/a } function test_0037() { - find_diff "$basic" -iname '*F*' + bfs_diff links -xtype l } function test_0038() { - find_diff "$basic" -ipath "$basic/*F*" + bfs_diff links -xtype f } function test_0039() { - find_diff "$links" -lname '[aq]' + bfs_diff -L links -xtype l 2>/dev/null } function test_0040() { - find_diff "$links" -ilname '[AQ]' + bfs_diff -L links -xtype f 2>/dev/null } function test_0041() { - find_diff -L "$links" -lname '[aq]' 2>/dev/null + bfs_diff basic/a -name a } function test_0042() { - find_diff -L "$links" -lname '[AQ]' 2>/dev/null + bfs_diff basic/g/ -name g } function test_0043() { - find_diff -L "$basic" -user "$(id -un)" + bfs_diff / -maxdepth 0 -name / 2>/dev/null } function test_0044() { - find_diff -L "$basic" -user "$(id -u)" + bfs_diff // -maxdepth 0 -name / 2>/dev/null } function test_0045() { - find_diff -L "$basic" -group "$(id -gn)" + bfs_diff basic -iname '*F*' } function test_0046() { - find_diff -L "$basic" -group "$(id -g)" + bfs_diff basic -ipath 'basic/*F*' } function test_0047() { - find_diff "$basic" -daystart -mtime 0 + bfs_diff links -lname '[aq]' } function test_0048() { - find_diff "$basic" -daystart -daystart -mtime 0 + bfs_diff links -ilname '[AQ]' } function test_0049() { - find_diff "$basic" -newermc "$basic/e/f" + bfs_diff -L links -lname '[aq]' 2>/dev/null } function test_0050() { - find_diff "$basic" -size 0 + bfs_diff -L links -ilname '[AQ]' 2>/dev/null } function test_0051() { - find_diff "$basic" -size +0 + bfs_diff -L basic -user "$(id -un)" } function test_0052() { - find_diff "$basic" -size +0c + bfs_diff -L basic -user "$(id -u)" } function test_0053() { - find_diff "$basic" -size 9223372036854775807 + bfs_diff -L basic -group "$(id -gn)" } function test_0054() { - find_diff "$basic" -exec echo '{}' ';' + bfs_diff -L basic -group "$(id -g)" } function test_0055() { - find_diff "$basic" -exec echo '-{}-' ';' + bfs_diff basic -daystart -mtime 0 } function test_0056() { - find_diff "$basic" -execdir pwd ';' + bfs_diff basic -daystart -daystart -mtime 0 } function test_0057() { - find_diff "$basic" -execdir echo '{}' ';' + bfs_diff times -newerma times/a } function test_0058() { - find_diff "$basic" -execdir echo '-{}-' ';' + bfs_diff basic -size 0 } function test_0059() { - find_diff "$basic" \( -name '*f*' \) + bfs_diff basic -size +0 } function test_0060() { - find_diff "$basic" -name '*f*' -print , -print + bfs_diff basic -size +0c } function test_0061() { - cd "$weirdnames" - find_diff '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \) + bfs_diff basic -size 9223372036854775807 } function test_0062() { - cd "$weirdnames" - find_diff -L '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \) + bfs_diff basic -exec echo '{}' ';' } function test_0063() { - cd "$weirdnames" - find_diff -L ',' -true + bfs_diff basic -exec echo '-{}-' ';' } function test_0064() { - cd "$weirdnames" - find_diff -follow ',' -true + local OFFSET="$((${#TMP} + 2))" + bfs_diff basic -execdir bash -c "pwd | cut -b$OFFSET-" ';' } function test_0065() { - find "$basic" -fprint "$scratch/out.find" - "$BFS" "$basic" -fprint "$scratch/out.bfs" - - sort -o "$scratch/out.find" "$scratch/out.find" - sort -o "$scratch/out.bfs" "$scratch/out.bfs" - diff -u "$scratch/out.find" "$scratch/out.bfs" + bfs_diff basic -execdir echo '{}' ';' } function test_0066() { - cd "$basic" - find_diff -- -type f + bfs_diff basic -execdir echo '-{}-' ';' } function test_0067() { - cd "$basic" - find_diff -L -- -type f + bfs_diff basic \( -name '*f*' \) } function test_0068() { - # Make sure -ignore_readdir_race doesn't suppress ENOENT at the root - ! "$BFS" "$basic/nonexistent" -ignore_readdir_race 2>/dev/null + bfs_diff basic -name '*f*' -print , -print } function test_0069() { - rm -rf "$scratch"/* - touch "$scratch"/{foo,bar} - - # -links 1 forces a stat() call, which will fail for the second file - "$BFS" "$scratch" -mindepth 1 -ignore_readdir_race -links 1 -exec ./tests/remove-sibling.sh '{}' ';' + cd weirdnames + bfs_diff '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \) } function test_0070() { - find_diff "$perms" -perm 222 && \ - find_diff "$perms" -perm -222 && \ - find_diff "$perms" -perm /222 + cd weirdnames + bfs_diff -L '-' '(-' '!-' ',' ')' './(' './!' \( \! -print , -print \) } function test_0071() { - find_diff "$perms" -perm 644 && \ - find_diff "$perms" -perm -644 && \ - find_diff "$perms" -perm /644 + cd weirdnames + bfs_diff -L ',' -true } function test_0072() { - find_diff "$perms" -perm a+r,u=wX,g+wX-w && \ - find_diff "$perms" -perm -a+r,u=wX,g+wX-w && \ - find_diff "$perms" -perm /a+r,u=wX,g+wX-w + cd weirdnames + bfs_diff -follow ',' -true } function test_0073() { - ! "$BFS" "$perms" -perm a+r, 2>/dev/null + if [ "$UPDATE" ]; then + "$BFS" basic -fprint "$TESTS/test_0073.out" + sort -o "$TESTS/test_0073.out" "$TESTS/test_0073.out" + else + "$BFS" basic -fprint scratch/test_0073.out + sort -o scratch/test_0073.out scratch/test_0073.out + diff -u scratch/test_0073.out "$TESTS/test_0073.out" + fi } function test_0074() { - ! "$BFS" "$perms" -perm a+r,,u+w 2>/dev/null + cd basic + bfs_diff -- -type f } function test_0075() { - ! "$BFS" "$perms" -perm a 2>/dev/null + cd basic + bfs_diff -L -- -type f } function test_0076() { - find_diff "$perms" -perm -+rwx && \ - find_diff "$perms" -perm /+rwx + # Make sure -ignore_readdir_race doesn't suppress ENOENT at the root + ! "$BFS" basic/nonexistent -ignore_readdir_race 2>/dev/null } function test_0077() { - ! "$BFS" "$perms" -perm +rwx 2>/dev/null + rm -rf scratch/* + touch scratch/{foo,bar} + + # -links 1 forces a stat() call, which will fail for the second file + "$BFS" scratch -mindepth 1 -ignore_readdir_race -links 1 -exec "$TESTS/remove-sibling.sh" '{}' ';' } function test_0078() { - ! "$BFS" "$perms" -perm +777 2>/dev/null + bfs_diff perms -perm 222 } function test_0079() { - # -ok should close stdin for the executed command - yes | "$BFS" "$basic" -ok cat ';' 2>/dev/null + bfs_diff perms -perm -222 } function test_0080() { - # -okdir should close stdin for the executed command - yes | "$BFS" "$basic" -okdir cat ';' 2>/dev/null + bfs_diff perms -perm /222 } function test_0081() { - find_diff "$basic/" -depth + bfs_diff perms -perm 644 } function test_0082() { - # Don't try to delete . - (cd "$scratch" && "$BFS" -delete) + bfs_diff perms -perm -644 +} + +function test_0083() { + bfs_diff perms -perm /644 +} + +function test_0084() { + bfs_diff perms -perm a+r,u=wX,g+wX-w +} + +function test_0085() { + bfs_diff perms -perm -a+r,u=wX,g+wX-w +} + +function test_0086() { + bfs_diff perms -perm /a+r,u=wX,g+wX-w +} + +function test_0087() { + ! "$BFS" perms -perm a+r, 2>/dev/null +} + +function test_0088() { + ! "$BFS" perms -perm a+r,,u+w 2>/dev/null +} + +function test_0089() { + ! "$BFS" perms -perm a 2>/dev/null +} + +function test_0090() { + bfs_diff perms -perm -+rwx +} + +function test_0091() { + bfs_diff perms -perm /+rwx +} + +function test_0092() { + ! "$BFS" perms -perm +rwx 2>/dev/null +} + +function test_0093() { + ! "$BFS" perms -perm +777 2>/dev/null +} + +function test_0094() { + # -ok should close stdin for the executed command + yes | "$BFS" basic -ok cat ';' 2>/dev/null +} + +function test_0095() { + # -okdir should close stdin for the executed command + yes | "$BFS" basic -okdir cat ';' 2>/dev/null +} + +function test_0096() { + bfs_diff basic/ -depth +} + +function test_0097() { + # Don't try to delete '.' + (cd scratch && "$BFS" -delete) } -for i in {1..82}; do +for i in {1..97}; do test="test_$(printf '%04d' $i)" if [ -t 1 ]; then diff --git a/tests/test_0001.out b/tests/test_0001.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0001.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_0002.out b/tests/test_0002.out new file mode 100644 index 0000000..1e72fd9 --- /dev/null +++ b/tests/test_0002.out @@ -0,0 +1,12 @@ +basic +basic/c +basic/e +basic/g +basic/i +basic/j +basic/k +basic/l +basic/g/h +basic/k/foo +basic/l/foo +basic/l/foo/bar diff --git a/tests/test_0003.out b/tests/test_0003.out new file mode 100644 index 0000000..6218a0c --- /dev/null +++ b/tests/test_0003.out @@ -0,0 +1,7 @@ +basic/a +basic/b +basic/c/d +basic/e/f +basic/j/foo +basic/k/foo/bar +basic/l/foo/bar/baz diff --git a/tests/test_0004.out b/tests/test_0004.out new file mode 100644 index 0000000..1f00c58 --- /dev/null +++ b/tests/test_0004.out @@ -0,0 +1,18 @@ +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_0005.out b/tests/test_0005.out new file mode 100644 index 0000000..7575ae4 --- /dev/null +++ b/tests/test_0005.out @@ -0,0 +1,10 @@ +basic +basic/a +basic/b +basic/c +basic/e +basic/g +basic/i +basic/j +basic/k +basic/l diff --git a/tests/test_0006.out b/tests/test_0006.out new file mode 100644 index 0000000..1f00c58 --- /dev/null +++ b/tests/test_0006.out @@ -0,0 +1,18 @@ +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_0007.out b/tests/test_0007.out new file mode 100644 index 0000000..4198bf9 --- /dev/null +++ b/tests/test_0007.out @@ -0,0 +1,9 @@ +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_0008.out b/tests/test_0008.out new file mode 100644 index 0000000..7575ae4 --- /dev/null +++ b/tests/test_0008.out @@ -0,0 +1,10 @@ +basic +basic/a +basic/b +basic/c +basic/e +basic/g +basic/i +basic/j +basic/k +basic/l diff --git a/tests/test_0009.out b/tests/test_0009.out new file mode 100644 index 0000000..b79fef1 --- /dev/null +++ b/tests/test_0009.out @@ -0,0 +1,16 @@ +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 diff --git a/tests/test_0010.out b/tests/test_0010.out new file mode 100644 index 0000000..a9e5d42 --- /dev/null +++ b/tests/test_0010.out @@ -0,0 +1,4 @@ +basic/e/f +basic/j/foo +basic/k/foo +basic/l/foo diff --git a/tests/test_0011.out b/tests/test_0011.out new file mode 100644 index 0000000..0d36df9 --- /dev/null +++ b/tests/test_0011.out @@ -0,0 +1,7 @@ +basic/e/f +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_0012.out b/tests/test_0012.out new file mode 100644 index 0000000..49c1b21 --- /dev/null +++ b/tests/test_0012.out @@ -0,0 +1,4 @@ +perms +perms/rwx +perms/rx +perms/wx diff --git a/tests/test_0013.out b/tests/test_0013.out new file mode 100644 index 0000000..386feba --- /dev/null +++ b/tests/test_0013.out @@ -0,0 +1,5 @@ +perms +perms/r +perms/rw +perms/rwx +perms/rx diff --git a/tests/test_0014.out b/tests/test_0014.out new file mode 100644 index 0000000..9a5b95a --- /dev/null +++ b/tests/test_0014.out @@ -0,0 +1,5 @@ +perms +perms/rw +perms/rwx +perms/w +perms/wx diff --git a/tests/test_0015.out b/tests/test_0015.out new file mode 100644 index 0000000..1dbddc7 --- /dev/null +++ b/tests/test_0015.out @@ -0,0 +1,9 @@ +basic/a +basic/b +basic/i +basic/c/d +basic/e/f +basic/g/h +basic/j/foo +basic/k/foo/bar +basic/l/foo/bar/baz diff --git a/tests/test_0016.out b/tests/test_0016.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0016.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_0017.out b/tests/test_0017.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0017.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_0018.out b/tests/test_0018.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0018.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_0019.out b/tests/test_0019.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0019.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_0020.out b/tests/test_0020.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0020.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_0021.out b/tests/test_0021.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0021.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_0022.out b/tests/test_0022.out new file mode 100644 index 0000000..7f6c0dd --- /dev/null +++ b/tests/test_0022.out @@ -0,0 +1,4 @@ +times +times/b +times/c +times/l diff --git a/tests/test_0023.out b/tests/test_0023.out new file mode 100644 index 0000000..7f6c0dd --- /dev/null +++ b/tests/test_0023.out @@ -0,0 +1,4 @@ +times +times/b +times/c +times/l diff --git a/tests/test_0024.out b/tests/test_0024.out new file mode 100644 index 0000000..a3dcbb2 --- /dev/null +++ b/tests/test_0024.out @@ -0,0 +1,3 @@ +links/a +links/c +links/d/e/f diff --git a/tests/test_0025.out b/tests/test_0025.out new file mode 100644 index 0000000..092fe54 --- /dev/null +++ b/tests/test_0025.out @@ -0,0 +1,4 @@ +links/b +links/h +links/d/e/g +links/d/e/i diff --git a/tests/test_0026.out b/tests/test_0026.out new file mode 100644 index 0000000..1f94970 --- /dev/null +++ b/tests/test_0026.out @@ -0,0 +1,6 @@ +links +links/a +links/c +links/d +links/d/e +links/d/e/f diff --git a/tests/test_0027.out b/tests/test_0027.out new file mode 100644 index 0000000..a4beda4 --- /dev/null +++ b/tests/test_0027.out @@ -0,0 +1 @@ +links/d/e/f diff --git a/tests/test_0028.out b/tests/test_0028.out new file mode 100644 index 0000000..0a4fc77 --- /dev/null +++ b/tests/test_0028.out @@ -0,0 +1 @@ +links/d/e/f/ diff --git a/tests/test_0029.out b/tests/test_0029.out new file mode 100644 index 0000000..a4beda4 --- /dev/null +++ b/tests/test_0029.out @@ -0,0 +1 @@ +links/d/e/f diff --git a/tests/test_0030.out b/tests/test_0030.out new file mode 100644 index 0000000..0a4fc77 --- /dev/null +++ b/tests/test_0030.out @@ -0,0 +1 @@ +links/d/e/f/ diff --git a/tests/test_0031.out b/tests/test_0031.out new file mode 100644 index 0000000..7f6c0dd --- /dev/null +++ b/tests/test_0031.out @@ -0,0 +1,4 @@ +times +times/b +times/c +times/l diff --git a/tests/test_0032.out b/tests/test_0032.out new file mode 100644 index 0000000..e5e13fc --- /dev/null +++ b/tests/test_0032.out @@ -0,0 +1 @@ +links/d/e/i diff --git a/tests/test_0033.out b/tests/test_0033.out new file mode 100644 index 0000000..36087e8 --- /dev/null +++ b/tests/test_0033.out @@ -0,0 +1,12 @@ +links +links/a +links/b +links/c +links/d +links/h +links/d/e +links/h/f +links/h/g +links/h/i +links/d/e/f +links/d/e/i diff --git a/tests/test_0034.out b/tests/test_0034.out new file mode 100644 index 0000000..36087e8 --- /dev/null +++ b/tests/test_0034.out @@ -0,0 +1,12 @@ +links +links/a +links/b +links/c +links/d +links/h +links/d/e +links/h/f +links/h/g +links/h/i +links/d/e/f +links/d/e/i diff --git a/tests/test_0035.out b/tests/test_0035.out new file mode 100644 index 0000000..36087e8 --- /dev/null +++ b/tests/test_0035.out @@ -0,0 +1,12 @@ +links +links/a +links/b +links/c +links/d +links/h +links/d/e +links/h/f +links/h/g +links/h/i +links/d/e/f +links/d/e/i diff --git a/tests/test_0036.out b/tests/test_0036.out new file mode 100644 index 0000000..892c879 --- /dev/null +++ b/tests/test_0036.out @@ -0,0 +1,2 @@ +links/a +links/c diff --git a/tests/test_0037.out b/tests/test_0037.out new file mode 100644 index 0000000..e5e13fc --- /dev/null +++ b/tests/test_0037.out @@ -0,0 +1 @@ +links/d/e/i diff --git a/tests/test_0038.out b/tests/test_0038.out new file mode 100644 index 0000000..2a65132 --- /dev/null +++ b/tests/test_0038.out @@ -0,0 +1,3 @@ +links/a +links/b +links/c diff --git a/tests/test_0039.out b/tests/test_0039.out new file mode 100644 index 0000000..1052fc0 --- /dev/null +++ b/tests/test_0039.out @@ -0,0 +1,5 @@ +links/b +links/h +links/h/g +links/h/i +links/d/e/i diff --git a/tests/test_0040.out b/tests/test_0040.out new file mode 100644 index 0000000..892c879 --- /dev/null +++ b/tests/test_0040.out @@ -0,0 +1,2 @@ +links/a +links/c diff --git a/tests/test_0041.out b/tests/test_0041.out new file mode 100644 index 0000000..511198f --- /dev/null +++ b/tests/test_0041.out @@ -0,0 +1 @@ +basic/a diff --git a/tests/test_0042.out b/tests/test_0042.out new file mode 100644 index 0000000..daff2f5 --- /dev/null +++ b/tests/test_0042.out @@ -0,0 +1 @@ +basic/g/ diff --git a/tests/test_0043.out b/tests/test_0043.out new file mode 100644 index 0000000..b498fd4 --- /dev/null +++ b/tests/test_0043.out @@ -0,0 +1 @@ +/ diff --git a/tests/test_0044.out b/tests/test_0044.out new file mode 100644 index 0000000..8337712 --- /dev/null +++ b/tests/test_0044.out @@ -0,0 +1 @@ +// diff --git a/tests/test_0045.out b/tests/test_0045.out new file mode 100644 index 0000000..a9e5d42 --- /dev/null +++ b/tests/test_0045.out @@ -0,0 +1,4 @@ +basic/e/f +basic/j/foo +basic/k/foo +basic/l/foo diff --git a/tests/test_0046.out b/tests/test_0046.out new file mode 100644 index 0000000..0d36df9 --- /dev/null +++ b/tests/test_0046.out @@ -0,0 +1,7 @@ +basic/e/f +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_0047.out b/tests/test_0047.out new file mode 100644 index 0000000..45cc127 --- /dev/null +++ b/tests/test_0047.out @@ -0,0 +1,2 @@ +links/b +links/d/e/i diff --git a/tests/test_0048.out b/tests/test_0048.out new file mode 100644 index 0000000..45cc127 --- /dev/null +++ b/tests/test_0048.out @@ -0,0 +1,2 @@ +links/b +links/d/e/i diff --git a/tests/test_0049.out b/tests/test_0049.out new file mode 100644 index 0000000..b7e42dd --- /dev/null +++ b/tests/test_0049.out @@ -0,0 +1,2 @@ +links/h/i +links/d/e/i diff --git a/tests/test_0050.out b/tests/test_0050.out new file mode 100644 index 0000000..b7e42dd --- /dev/null +++ b/tests/test_0050.out @@ -0,0 +1,2 @@ +links/h/i +links/d/e/i diff --git a/tests/test_0051.out b/tests/test_0051.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0051.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_0052.out b/tests/test_0052.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0052.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_0053.out b/tests/test_0053.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0053.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_0054.out b/tests/test_0054.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0054.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_0055.out b/tests/test_0055.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0055.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_0056.out b/tests/test_0056.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0056.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_0057.out b/tests/test_0057.out new file mode 100644 index 0000000..7f6c0dd --- /dev/null +++ b/tests/test_0057.out @@ -0,0 +1,4 @@ +times +times/b +times/c +times/l diff --git a/tests/test_0058.out b/tests/test_0058.out new file mode 100644 index 0000000..6218a0c --- /dev/null +++ b/tests/test_0058.out @@ -0,0 +1,7 @@ +basic/a +basic/b +basic/c/d +basic/e/f +basic/j/foo +basic/k/foo/bar +basic/l/foo/bar/baz diff --git a/tests/test_0059.out b/tests/test_0059.out new file mode 100644 index 0000000..1e72fd9 --- /dev/null +++ b/tests/test_0059.out @@ -0,0 +1,12 @@ +basic +basic/c +basic/e +basic/g +basic/i +basic/j +basic/k +basic/l +basic/g/h +basic/k/foo +basic/l/foo +basic/l/foo/bar diff --git a/tests/test_0060.out b/tests/test_0060.out new file mode 100644 index 0000000..1e72fd9 --- /dev/null +++ b/tests/test_0060.out @@ -0,0 +1,12 @@ +basic +basic/c +basic/e +basic/g +basic/i +basic/j +basic/k +basic/l +basic/g/h +basic/k/foo +basic/l/foo +basic/l/foo/bar diff --git a/tests/test_0061.out b/tests/test_0061.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/test_0061.out diff --git a/tests/test_0062.out b/tests/test_0062.out new file mode 100644 index 0000000..bb3cd8d --- /dev/null +++ b/tests/test_0062.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_0063.out b/tests/test_0063.out new file mode 100644 index 0000000..1c58fb2 --- /dev/null +++ b/tests/test_0063.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_0064.out b/tests/test_0064.out new file mode 100644 index 0000000..97e97f9 --- /dev/null +++ b/tests/test_0064.out @@ -0,0 +1,19 @@ +basic +basic +basic +basic +basic +basic +basic +basic +basic +basic +basic/c +basic/e +basic/g +basic/j +basic/k +basic/l +basic/k/foo +basic/l/foo +basic/l/foo/bar diff --git a/tests/test_0065.out b/tests/test_0065.out new file mode 100644 index 0000000..62b31f6 --- /dev/null +++ b/tests/test_0065.out @@ -0,0 +1,19 @@ +./a +./b +./bar +./bar +./basic +./baz +./c +./d +./e +./f +./foo +./foo +./foo +./g +./h +./i +./j +./k +./l diff --git a/tests/test_0066.out b/tests/test_0066.out new file mode 100644 index 0000000..f7a9ac0 --- /dev/null +++ b/tests/test_0066.out @@ -0,0 +1,19 @@ +-./a- +-./b- +-./bar- +-./bar- +-./basic- +-./baz- +-./c- +-./d- +-./e- +-./f- +-./foo- +-./foo- +-./foo- +-./g- +-./h- +-./i- +-./j- +-./k- +-./l- diff --git a/tests/test_0067.out b/tests/test_0067.out new file mode 100644 index 0000000..a9e5d42 --- /dev/null +++ b/tests/test_0067.out @@ -0,0 +1,4 @@ +basic/e/f +basic/j/foo +basic/k/foo +basic/l/foo diff --git a/tests/test_0068.out b/tests/test_0068.out new file mode 100644 index 0000000..56b2bde --- /dev/null +++ b/tests/test_0068.out @@ -0,0 +1,23 @@ +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/e/f +basic/g/h +basic/j/foo +basic/j/foo +basic/k/foo +basic/k/foo +basic/l/foo +basic/l/foo +basic/k/foo/bar +basic/l/foo/bar +basic/l/foo/bar/baz diff --git a/tests/test_0069.out b/tests/test_0069.out new file mode 100644 index 0000000..d06572a --- /dev/null +++ b/tests/test_0069.out @@ -0,0 +1,28 @@ +- +- +, +, +!- +!- +(- +(- +) +) +./! +./! +./( +./( +-/a +-/a +(-/c +(-/c +!-/e +!-/e +,/f +,/f +)/g +)/g +./(/b +./(/b +./!/d +./!/d diff --git a/tests/test_0070.out b/tests/test_0070.out new file mode 100644 index 0000000..d06572a --- /dev/null +++ b/tests/test_0070.out @@ -0,0 +1,28 @@ +- +- +, +, +!- +!- +(- +(- +) +) +./! +./! +./( +./( +-/a +-/a +(-/c +(-/c +!-/e +!-/e +,/f +,/f +)/g +)/g +./(/b +./(/b +./!/d +./!/d diff --git a/tests/test_0071.out b/tests/test_0071.out new file mode 100644 index 0000000..3574388 --- /dev/null +++ b/tests/test_0071.out @@ -0,0 +1,2 @@ +, +,/f diff --git a/tests/test_0072.out b/tests/test_0072.out new file mode 100644 index 0000000..bbe4f7f --- /dev/null +++ b/tests/test_0072.out @@ -0,0 +1,15 @@ +. +./- +./, +./! +./!- +./( +./(- +./) +./-/a +./(/b +./(-/c +./!/d +./!-/e +./,/f +./)/g diff --git a/tests/test_0073.out b/tests/test_0073.out new file mode 100644 index 0000000..a7ccfe4 --- /dev/null +++ b/tests/test_0073.out @@ -0,0 +1,19 @@ +basic +basic/a +basic/b +basic/c +basic/c/d +basic/e +basic/e/f +basic/g +basic/g/h +basic/i +basic/j +basic/j/foo +basic/k +basic/k/foo +basic/k/foo/bar +basic/l +basic/l/foo +basic/l/foo/bar +basic/l/foo/bar/baz diff --git a/tests/test_0074.out b/tests/test_0074.out new file mode 100644 index 0000000..774cc7c --- /dev/null +++ b/tests/test_0074.out @@ -0,0 +1,7 @@ +./a +./b +./c/d +./e/f +./j/foo +./k/foo/bar +./l/foo/bar/baz diff --git a/tests/test_0075.out b/tests/test_0075.out new file mode 100644 index 0000000..774cc7c --- /dev/null +++ b/tests/test_0075.out @@ -0,0 +1,7 @@ +./a +./b +./c/d +./e/f +./j/foo +./k/foo/bar +./l/foo/bar/baz diff --git a/tests/test_0078.out b/tests/test_0078.out new file mode 100644 index 0000000..1690e43 --- /dev/null +++ b/tests/test_0078.out @@ -0,0 +1 @@ +perms/w diff --git a/tests/test_0079.out b/tests/test_0079.out new file mode 100644 index 0000000..1690e43 --- /dev/null +++ b/tests/test_0079.out @@ -0,0 +1 @@ +perms/w diff --git a/tests/test_0080.out b/tests/test_0080.out new file mode 100644 index 0000000..9a5b95a --- /dev/null +++ b/tests/test_0080.out @@ -0,0 +1,5 @@ +perms +perms/rw +perms/rwx +perms/w +perms/wx diff --git a/tests/test_0081.out b/tests/test_0081.out new file mode 100644 index 0000000..4e64e49 --- /dev/null +++ b/tests/test_0081.out @@ -0,0 +1 @@ +perms/rw diff --git a/tests/test_0082.out b/tests/test_0082.out new file mode 100644 index 0000000..2e2576b --- /dev/null +++ b/tests/test_0082.out @@ -0,0 +1,3 @@ +perms +perms/rw +perms/rwx diff --git a/tests/test_0083.out b/tests/test_0083.out new file mode 100644 index 0000000..7e5ae98 --- /dev/null +++ b/tests/test_0083.out @@ -0,0 +1,7 @@ +perms +perms/r +perms/rw +perms/rwx +perms/rx +perms/w +perms/wx diff --git a/tests/test_0084.out b/tests/test_0084.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/test_0084.out diff --git a/tests/test_0085.out b/tests/test_0085.out new file mode 100644 index 0000000..2e2576b --- /dev/null +++ b/tests/test_0085.out @@ -0,0 +1,3 @@ +perms +perms/rw +perms/rwx diff --git a/tests/test_0086.out b/tests/test_0086.out new file mode 100644 index 0000000..7e5ae98 --- /dev/null +++ b/tests/test_0086.out @@ -0,0 +1,7 @@ +perms +perms/r +perms/rw +perms/rwx +perms/rx +perms/w +perms/wx diff --git a/tests/test_0090.out b/tests/test_0090.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/test_0090.out diff --git a/tests/test_0091.out b/tests/test_0091.out new file mode 100644 index 0000000..7e5ae98 --- /dev/null +++ b/tests/test_0091.out @@ -0,0 +1,7 @@ +perms +perms/r +perms/rw +perms/rwx +perms/rx +perms/w +perms/wx diff --git a/tests/test_0096.out b/tests/test_0096.out new file mode 100644 index 0000000..7ce7a82 --- /dev/null +++ b/tests/test_0096.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 |