diff options
Diffstat (limited to 'find/testsuite/find.gnu')
148 files changed, 888 insertions, 0 deletions
diff --git a/find/testsuite/find.gnu/access.exp b/find/testsuite/find.gnu/access.exp new file mode 100644 index 0000000..c6308b9 --- /dev/null +++ b/find/testsuite/find.gnu/access.exp @@ -0,0 +1,14 @@ +# tests for -readable, -writable, -executable +exec rm -rf tmp +exec mkdir tmp +if { ! [ fs_superuser ] } { + touch tmp/x tmp/w tmp/r tmp/rw tmp/rwx tmp/0 + exec chmod 400 tmp/r + exec chmod 200 tmp/w + exec chmod 100 tmp/x + exec chmod 000 tmp/0 + exec chmod 600 tmp/rw + exec chmod 700 tmp/rwx + find_start p {tmp -readable -printf "r %p\n" , -writable -printf "w %p\n" , -executable -printf "x %p\n"} + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/access.xo b/find/testsuite/find.gnu/access.xo new file mode 100644 index 0000000..464957d --- /dev/null +++ b/find/testsuite/find.gnu/access.xo @@ -0,0 +1,11 @@ +r tmp +r tmp/r +r tmp/rw +r tmp/rwx +w tmp +w tmp/rw +w tmp/rwx +w tmp/w +x tmp +x tmp/rwx +x tmp/x diff --git a/find/testsuite/find.gnu/comma.exp b/find/testsuite/find.gnu/comma.exp new file mode 100644 index 0000000..07a768b --- /dev/null +++ b/find/testsuite/find.gnu/comma.exp @@ -0,0 +1 @@ +find_start p {. -maxdepth 2 -false , -name .} diff --git a/find/testsuite/find.gnu/comma.xo b/find/testsuite/find.gnu/comma.xo new file mode 100644 index 0000000..9c558e3 --- /dev/null +++ b/find/testsuite/find.gnu/comma.xo @@ -0,0 +1 @@ +. diff --git a/find/testsuite/find.gnu/delete.exp b/find/testsuite/find.gnu/delete.exp new file mode 100644 index 0000000..f748321 --- /dev/null +++ b/find/testsuite/find.gnu/delete.exp @@ -0,0 +1,7 @@ +global FTSFIND +global FINDFLAGS +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one tmp/top/one/foo tmp/top/two +eval exec $FTSFIND tmp $FINDFLAGS -path tmp/top/two -delete +find_start p {tmp -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/delete.xo b/find/testsuite/find.gnu/delete.xo new file mode 100644 index 0000000..c84cffb --- /dev/null +++ b/find/testsuite/find.gnu/delete.xo @@ -0,0 +1,4 @@ +tmp +tmp/top +tmp/top/one +tmp/top/one/foo diff --git a/find/testsuite/find.gnu/deletedir.exp b/find/testsuite/find.gnu/deletedir.exp new file mode 100644 index 0000000..8809747 --- /dev/null +++ b/find/testsuite/find.gnu/deletedir.exp @@ -0,0 +1,9 @@ +global FTSFIND +global FINDFLAGS +exec rm -rf tmp +exec mkdir tmp tmp/top +proc createdir {} { + exec mkdir tmp/top/dir +} +find_start p {tmp -path tmp/top/dir -delete -print} "" "" createdir +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/deletedir.xo b/find/testsuite/find.gnu/deletedir.xo new file mode 100644 index 0000000..9f0155f --- /dev/null +++ b/find/testsuite/find.gnu/deletedir.xo @@ -0,0 +1 @@ +tmp/top/dir diff --git a/find/testsuite/find.gnu/deletefile.exp b/find/testsuite/find.gnu/deletefile.exp new file mode 100644 index 0000000..552cf67 --- /dev/null +++ b/find/testsuite/find.gnu/deletefile.exp @@ -0,0 +1,9 @@ +global FTSFIND +global FINDFLAGS +exec rm -rf tmp +exec mkdir tmp tmp/top +proc touchfile {} { + exec touch tmp/top/file +} +find_start p {tmp -path tmp/top/file -delete -print} "" "" touchfile +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/deletefile.xo b/find/testsuite/find.gnu/deletefile.xo new file mode 100644 index 0000000..425c112 --- /dev/null +++ b/find/testsuite/find.gnu/deletefile.xo @@ -0,0 +1 @@ +tmp/top/file diff --git a/find/testsuite/find.gnu/depth-d.exp b/find/testsuite/find.gnu/depth-d.exp new file mode 100644 index 0000000..8e264a8 --- /dev/null +++ b/find/testsuite/find.gnu/depth-d.exp @@ -0,0 +1,8 @@ +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/top +exec mkdir tmp/top/one +exec touch tmp/top/one/foo +exec mkdir tmp/top/two +find_start p {tmp/top -d -mindepth 1 -type d -empty -print} +# exec rm -rf tmp diff --git a/find/testsuite/find.gnu/depth-d.xo b/find/testsuite/find.gnu/depth-d.xo new file mode 100644 index 0000000..e5f6986 --- /dev/null +++ b/find/testsuite/find.gnu/depth-d.xo @@ -0,0 +1 @@ +tmp/top/two diff --git a/find/testsuite/find.gnu/depth.exp b/find/testsuite/find.gnu/depth.exp new file mode 100644 index 0000000..d4913b2 --- /dev/null +++ b/find/testsuite/find.gnu/depth.exp @@ -0,0 +1,8 @@ +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/top +exec mkdir tmp/top/one +exec touch tmp/top/one/foo +exec mkdir tmp/top/two +find_start p {tmp/top -depth -mindepth 1 -type d -empty -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/depth.xo b/find/testsuite/find.gnu/depth.xo new file mode 100644 index 0000000..e5f6986 --- /dev/null +++ b/find/testsuite/find.gnu/depth.xo @@ -0,0 +1 @@ +tmp/top/two diff --git a/find/testsuite/find.gnu/empty.exp b/find/testsuite/find.gnu/empty.exp new file mode 100644 index 0000000..78f94d7 --- /dev/null +++ b/find/testsuite/find.gnu/empty.exp @@ -0,0 +1,7 @@ +# tests for -empty +exec rm -rf tmp +exec mkdir tmp +exec true > tmp/empty +exec echo > tmp/notempty +find_start p { tmp -type f -empty } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/empty.xo b/find/testsuite/find.gnu/empty.xo new file mode 100644 index 0000000..f352040 --- /dev/null +++ b/find/testsuite/find.gnu/empty.xo @@ -0,0 +1 @@ +tmp/empty
\ No newline at end of file diff --git a/find/testsuite/find.gnu/exec-many-rtn-failure.exp b/find/testsuite/find.gnu/exec-many-rtn-failure.exp new file mode 100644 index 0000000..463f8e2 --- /dev/null +++ b/find/testsuite/find.gnu/exec-many-rtn-failure.exp @@ -0,0 +1,4 @@ +# POSIX: If the invoked command fails, -exec still returns true if it +# was punctuated with +, because that always returns true. However, +# the program as a whole should return a NON-zero exit status. +find_start f { /tmp -exec false \{\} + -printf "yep\n" -quit } diff --git a/find/testsuite/find.gnu/exec-many-rtn-failure.xo b/find/testsuite/find.gnu/exec-many-rtn-failure.xo new file mode 100644 index 0000000..3b6f27e --- /dev/null +++ b/find/testsuite/find.gnu/exec-many-rtn-failure.xo @@ -0,0 +1 @@ +yep diff --git a/find/testsuite/find.gnu/exec-many-rtn-success.exp b/find/testsuite/find.gnu/exec-many-rtn-success.exp new file mode 100644 index 0000000..142929f --- /dev/null +++ b/find/testsuite/find.gnu/exec-many-rtn-success.exp @@ -0,0 +1,4 @@ +# POSIX: If the invoked command succeeds, -exec should return true if +# it was punctuated with +, because that always returns true. However, +# the program as a whole should also return a zero exit status. +find_start p { /tmp -exec true \{\} + -printf "yep\n" -quit } diff --git a/find/testsuite/find.gnu/exec-many-rtn-success.xo b/find/testsuite/find.gnu/exec-many-rtn-success.xo new file mode 100644 index 0000000..3b6f27e --- /dev/null +++ b/find/testsuite/find.gnu/exec-many-rtn-success.xo @@ -0,0 +1 @@ +yep diff --git a/find/testsuite/find.gnu/exec-one-rtn-fail.exp b/find/testsuite/find.gnu/exec-one-rtn-fail.exp new file mode 100644 index 0000000..b761d1d --- /dev/null +++ b/find/testsuite/find.gnu/exec-one-rtn-fail.exp @@ -0,0 +1,4 @@ +# If -exec \; fails, it should return false. The return +# value of find should stil; be 0, unless another error has +# happened. +find_start p { /tmp -exec false \; -o \( -printf "yep\n" -quit \) } diff --git a/find/testsuite/find.gnu/exec-one-rtn-fail.xo b/find/testsuite/find.gnu/exec-one-rtn-fail.xo new file mode 100644 index 0000000..3b6f27e --- /dev/null +++ b/find/testsuite/find.gnu/exec-one-rtn-fail.xo @@ -0,0 +1 @@ +yep diff --git a/find/testsuite/find.gnu/exec-one-rtn-success.exp b/find/testsuite/find.gnu/exec-one-rtn-success.exp new file mode 100644 index 0000000..d3c8b99 --- /dev/null +++ b/find/testsuite/find.gnu/exec-one-rtn-success.exp @@ -0,0 +1,3 @@ +# POSIX: If the invoked command succeeds, -exec should return true if +# it was punctuated with ; +find_start p { /tmp -exec true \; -printf "yep\n" -quit } diff --git a/find/testsuite/find.gnu/exec-one-rtn-success.xo b/find/testsuite/find.gnu/exec-one-rtn-success.xo new file mode 100644 index 0000000..3b6f27e --- /dev/null +++ b/find/testsuite/find.gnu/exec-one-rtn-success.xo @@ -0,0 +1 @@ +yep diff --git a/find/testsuite/find.gnu/execdir-hier.exp b/find/testsuite/find.gnu/execdir-hier.exp new file mode 100644 index 0000000..59d877b --- /dev/null +++ b/find/testsuite/find.gnu/execdir-hier.exp @@ -0,0 +1,8 @@ +# tests for -execdir ... \+ +# Specifically, ensure that output for separate directoires is not mixed. +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp tmp/two + find_start p { tmp -execdir echo \{\} \+ } + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-hier.xo b/find/testsuite/find.gnu/execdir-hier.xo new file mode 100644 index 0000000..d9fc49d --- /dev/null +++ b/find/testsuite/find.gnu/execdir-hier.xo @@ -0,0 +1,2 @@ +./tmp +./two diff --git a/find/testsuite/find.gnu/execdir-in-unreadable.exp b/find/testsuite/find.gnu/execdir-in-unreadable.exp new file mode 100644 index 0000000..fe78d5a --- /dev/null +++ b/find/testsuite/find.gnu/execdir-in-unreadable.exp @@ -0,0 +1,11 @@ +# tests for -execdir ... \+ in a directory which is not readable +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp + exec chmod 755 tmp + exec mkdir tmp/sub + exec chmod 300 tmp/sub + find_start p { tmp -maxdepth 1 -execdir true \{\} \+ } + exec chmod 700 tmp/sub + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-multiple.exp b/find/testsuite/find.gnu/execdir-multiple.exp new file mode 100644 index 0000000..f292fff --- /dev/null +++ b/find/testsuite/find.gnu/execdir-multiple.exp @@ -0,0 +1,58 @@ +# tests for -execdir ... \+ + +# Create 4 empty files in each of 6 directories. +# Also create a shell script in each of those 6 directories. +# Run a find command which runs the shell script for each empty file. +# Check to make sure that each file is mentioned exactly once, and that +# the command was run with the correct working directory. +# +# The output is a sequence of lines of this form: +# +# cwd ./basename +# +# cmd is the basename of the current directory at the time the command +# is run by -execidr. ./basename is the name of the file that was matched +# (that is, it's the value passed in {}). + +# $body is the body of a shell script we use for testing. +# It prints a series of lines of the form described above. +# One line is printed for each command-line argument. +set body {#! /bin/sh +set -e +here=`pwd` +d=`basename $here` + +for arg; +do + echo "$d" "$arg" +done | LC_ALL=C sort +} + + +if { [ safe_path ] } { + global SKIP_OLD + + exec rm -rf tmp + mkdir tmp + + # Put a copy of our shell script in each + # directory, plus some files. + foreach dir { a b c d e f } { + mkdir "tmp/$dir" + set script_name "tmp/$dir/runme" + set f [open "$script_name" "w" 0700 ] + puts $f "$body" + close $f + foreach item { one two three four } { + touch "tmp/$dir/$item" + } + } + + set SKIP_OLD 1 + find_start p {tmp -type f -empty -execdir sh ./runme \{\} + } "" + # We also repeat this test (with the same expected output) for the + # non-multiple case (this detects Savannah bug #29949). + find_start p {tmp -type f -empty -execdir sh ./runme \{\} \; } "" + set SKIP_OLD 0 + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-multiple.xo b/find/testsuite/find.gnu/execdir-multiple.xo new file mode 100644 index 0000000..a4f93d9 --- /dev/null +++ b/find/testsuite/find.gnu/execdir-multiple.xo @@ -0,0 +1,24 @@ +a ./one +a ./two +a ./three +a ./four +b ./one +b ./two +b ./three +b ./four +c ./one +c ./two +c ./three +c ./four +d ./one +d ./two +d ./three +d ./four +e ./one +e ./two +e ./three +e ./four +f ./one +f ./two +f ./three +f ./four diff --git a/find/testsuite/find.gnu/execdir-one.exp b/find/testsuite/find.gnu/execdir-one.exp new file mode 100644 index 0000000..53f2e00 --- /dev/null +++ b/find/testsuite/find.gnu/execdir-one.exp @@ -0,0 +1,7 @@ +# tests for -name +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp tmp/fred tmp/jim + find_start p {tmp -name fred -execdir echo \{\} \; } + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-one.xo b/find/testsuite/find.gnu/execdir-one.xo new file mode 100644 index 0000000..8584084 --- /dev/null +++ b/find/testsuite/find.gnu/execdir-one.xo @@ -0,0 +1 @@ +./fred diff --git a/find/testsuite/find.gnu/execdir-pwd.exp b/find/testsuite/find.gnu/execdir-pwd.exp new file mode 100644 index 0000000..740785f --- /dev/null +++ b/find/testsuite/find.gnu/execdir-pwd.exp @@ -0,0 +1,20 @@ +# tests for -execdir pwd \+ +if { [ safe_path ] } { + global SKIP_OLD + + exec rm -rf tmp + exec mkdir tmp + + # Create an empty shell script. + exec touch tmp/foo + exec chmod +x tmp/foo + + # The -execdir should find the "foo" in the current directory. + # If not, the find command is probably executing the command + # built up by -execdir in the wrong directory. + + set SKIP_OLD 1 + find_start p {tmp -name foo -execdir sh ./foo \{\} + } "" + set SKIP_OLD 0 + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-pwd1.exp b/find/testsuite/find.gnu/execdir-pwd1.exp new file mode 100644 index 0000000..e9863ac --- /dev/null +++ b/find/testsuite/find.gnu/execdir-pwd1.exp @@ -0,0 +1,20 @@ +# tests for working directory of -execdir {} \; +if { [ safe_path ] } { + global SKIP_OLD + + exec rm -rf tmp + exec mkdir tmp + + # Create an empty shell script. + exec touch tmp/foo + exec chmod +x tmp/foo + + # The -execdir should find the "foo" in the current directory. + # If not, the find command is probably executing the command + # built up by -execdir in the wrong directory. + + set SKIP_OLD 1 + find_start p {tmp -name foo -execdir sh ./foo \{\} \; } "" + set SKIP_OLD 0 + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/execdir-root-only.exp b/find/testsuite/find.gnu/execdir-root-only.exp new file mode 100644 index 0000000..c57fd31 --- /dev/null +++ b/find/testsuite/find.gnu/execdir-root-only.exp @@ -0,0 +1,21 @@ +# Bug report by Bas van Gompel: +# +# This appears to work well. However when the rootdir is passed, +# something looks fishy: +# +# find / -mindepth 0 -maxdepth 0 -execdir echo {} \; +# .// +# +# I also spotted, when `+' is used: +# +# find / -mindepth 0 -maxdepth 0 -execdir echo == {} + +# == +# == .// +# +# (Notice the first line of output, which should not be there.) + + +# This test checks the second of these two cases. +if { [ safe_path ] } { + find_start p { / -mindepth 0 -maxdepth 0 -execdir echo == "{}" + } +} diff --git a/find/testsuite/find.gnu/execdir-root-only.xo b/find/testsuite/find.gnu/execdir-root-only.xo new file mode 100644 index 0000000..c975392 --- /dev/null +++ b/find/testsuite/find.gnu/execdir-root-only.xo @@ -0,0 +1 @@ +== / diff --git a/find/testsuite/find.gnu/false.exp b/find/testsuite/find.gnu/false.exp new file mode 100644 index 0000000..31f98a5 --- /dev/null +++ b/find/testsuite/find.gnu/false.exp @@ -0,0 +1,5 @@ +# test for -false. +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/fred/jim +find_start p { tmp -depth -print -false -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/false.xo b/find/testsuite/find.gnu/false.xo new file mode 100644 index 0000000..9baad64 --- /dev/null +++ b/find/testsuite/find.gnu/false.xo @@ -0,0 +1,3 @@ +tmp/fred/jim +tmp/fred +tmp diff --git a/find/testsuite/find.gnu/follow-arg-parent-symlink.exp b/find/testsuite/find.gnu/follow-arg-parent-symlink.exp new file mode 100644 index 0000000..0ab9e47 --- /dev/null +++ b/find/testsuite/find.gnu/follow-arg-parent-symlink.exp @@ -0,0 +1,6 @@ +exec rm -rf tmp +exec mkdir tmp tmp/dir1 tmp/dir1/dir2 +exec touch tmp/dir1/dir2/foo +exec ln -s dir1 tmp/link1 +find_start p {tmp/link1/dir2 -type f -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/follow-arg-parent-symlink.xo b/find/testsuite/find.gnu/follow-arg-parent-symlink.xo new file mode 100644 index 0000000..0cf5187 --- /dev/null +++ b/find/testsuite/find.gnu/follow-arg-parent-symlink.xo @@ -0,0 +1 @@ +tmp/link1/dir2/foo diff --git a/find/testsuite/find.gnu/follow-basic.exp b/find/testsuite/find.gnu/follow-basic.exp new file mode 100644 index 0000000..bc62a2d --- /dev/null +++ b/find/testsuite/find.gnu/follow-basic.exp @@ -0,0 +1,10 @@ +# Verifies that the -follow option is correctly implemented, +# but does this by using the GNU extension -printf. +exec rm -rf tmp + +exec mkdir tmp +exec ln -s /etc/passwd tmp/LINK +exec ln -s /NOSUCHFILE tmp/BROKEN + +# Links should all be dereferenced unless they are broken. +find_start p { tmp/LINK tmp/BROKEN tmp -follow -printf "%y %d %p\n" } diff --git a/find/testsuite/find.gnu/follow-basic.xo b/find/testsuite/find.gnu/follow-basic.xo new file mode 100644 index 0000000..f2c7940 --- /dev/null +++ b/find/testsuite/find.gnu/follow-basic.xo @@ -0,0 +1,5 @@ +d 0 tmp +f 0 tmp/LINK +f 1 tmp/LINK +l 0 tmp/BROKEN +l 1 tmp/BROKEN diff --git a/find/testsuite/find.gnu/fprint-unwritable.exp b/find/testsuite/find.gnu/fprint-unwritable.exp new file mode 100644 index 0000000..905894d --- /dev/null +++ b/find/testsuite/find.gnu/fprint-unwritable.exp @@ -0,0 +1,9 @@ +# test for -fprint to unwritable dest (we expect this to fail) +if { ! [ fs_superuser ] } { + exec rm -rf tmp + file mkdir tmp + exec touch tmp/unwritable + exec chmod 444 tmp/unwritable + find_start f { tmp -fprint tmp/unwritable } + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/fprint0_stdout.exp b/find/testsuite/find.gnu/fprint0_stdout.exp new file mode 100644 index 0000000..c5a5aa8 --- /dev/null +++ b/find/testsuite/find.gnu/fprint0_stdout.exp @@ -0,0 +1,5 @@ +# test for -fprint +exec rm -rf tmp +exec touch tmp +find_start p { tmp -fprint0 /dev/stdout } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/fprint0_stdout.xo b/find/testsuite/find.gnu/fprint0_stdout.xo Binary files differnew file mode 100644 index 0000000..60688dd --- /dev/null +++ b/find/testsuite/find.gnu/fprint0_stdout.xo diff --git a/find/testsuite/find.gnu/fprintf-samefile.exp b/find/testsuite/find.gnu/fprintf-samefile.exp new file mode 100644 index 0000000..63e6fb7 --- /dev/null +++ b/find/testsuite/find.gnu/fprintf-samefile.exp @@ -0,0 +1,26 @@ +# This test was added as part of the fix for Savannah bug #24873, but it +# does not exercise the relevant condition (which is a race). While making +# the fix I found that there were no tests for -fprintf at all, so I added +# one. +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/file tmp/top +exec ln -s file tmp/same +# This command line should exercise the case where sharefile_fopen +# Detects that two destination files are actually the same. +find_start p {tmp/top -fprintf tmp/file "1: %p\n" -fprintf tmp/same "2: %p\n" } + +# We get here after the final iteration through the various +# find binaries and -O option. However -fprintf truncates the +# output file, so there should be just one set of output in there +# from + +# Check that we got the right output in tmp/file. +set f [open "tmp/file" "r"] +set data [read $f] +close $f +set expected "1: tmp/top\n2: tmp/top\n" +if { [string compare $data $expected] } { + fail "fprintf-samefile: expected output:\n$expected\nbut got:\n$data" +} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/gnu-or.exp b/find/testsuite/find.gnu/gnu-or.exp new file mode 100644 index 0000000..92a2939 --- /dev/null +++ b/find/testsuite/find.gnu/gnu-or.exp @@ -0,0 +1,5 @@ +# test for -false. +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/fred/jim +find_start p { tmp -depth -print -false -or -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/gnu-or.xo b/find/testsuite/find.gnu/gnu-or.xo new file mode 100644 index 0000000..8484390 --- /dev/null +++ b/find/testsuite/find.gnu/gnu-or.xo @@ -0,0 +1,6 @@ +tmp/fred/jim +tmp/fred/jim +tmp/fred +tmp/fred +tmp +tmp diff --git a/find/testsuite/find.gnu/gnuand.exp b/find/testsuite/find.gnu/gnuand.exp new file mode 100644 index 0000000..2e685ca --- /dev/null +++ b/find/testsuite/find.gnu/gnuand.exp @@ -0,0 +1,5 @@ +# tests for -name +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/jim +find_start p {tmp -name fred -and -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/gnuand.xo b/find/testsuite/find.gnu/gnuand.xo new file mode 100644 index 0000000..8cc8940 --- /dev/null +++ b/find/testsuite/find.gnu/gnuand.xo @@ -0,0 +1 @@ +tmp/fred diff --git a/find/testsuite/find.gnu/gnunot.exp b/find/testsuite/find.gnu/gnunot.exp new file mode 100644 index 0000000..4951c1e --- /dev/null +++ b/find/testsuite/find.gnu/gnunot.exp @@ -0,0 +1,5 @@ +# tests for ! +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/jim +find_start p {tmp -not -name fred -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/gnunot.xo b/find/testsuite/find.gnu/gnunot.xo new file mode 100644 index 0000000..776fed4 --- /dev/null +++ b/find/testsuite/find.gnu/gnunot.xo @@ -0,0 +1,2 @@ +tmp +tmp/jim
\ No newline at end of file diff --git a/find/testsuite/find.gnu/ilname.exp b/find/testsuite/find.gnu/ilname.exp new file mode 100644 index 0000000..2d27617 --- /dev/null +++ b/find/testsuite/find.gnu/ilname.exp @@ -0,0 +1,7 @@ +# tests for -ilname +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/one +exec ln -s one tmp/two +find_start p {tmp -ilname One -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/ilname.xo b/find/testsuite/find.gnu/ilname.xo new file mode 100644 index 0000000..c7b45df --- /dev/null +++ b/find/testsuite/find.gnu/ilname.xo @@ -0,0 +1 @@ +tmp/two diff --git a/find/testsuite/find.gnu/iname.exp b/find/testsuite/find.gnu/iname.exp new file mode 100644 index 0000000..c8c26a4 --- /dev/null +++ b/find/testsuite/find.gnu/iname.exp @@ -0,0 +1,5 @@ +# tests for -name +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/jim +find_start p {tmp -iname frED -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/iname.xo b/find/testsuite/find.gnu/iname.xo new file mode 100644 index 0000000..8cc8940 --- /dev/null +++ b/find/testsuite/find.gnu/iname.xo @@ -0,0 +1 @@ +tmp/fred diff --git a/find/testsuite/find.gnu/inum.exp b/find/testsuite/find.gnu/inum.exp new file mode 100644 index 0000000..75614f5 --- /dev/null +++ b/find/testsuite/find.gnu/inum.exp @@ -0,0 +1,7 @@ +# test for -inum +exec rm -rf tmp tmp2 +exec touch tmp tmp2 +set list [ split [ exec ls -1i tmp ] ] +set inode [ lindex $list 0 ] +find_start p " tmp tmp2 -inum $inode -print " +exec rm -rf tmp tmp2 diff --git a/find/testsuite/find.gnu/inum.xo b/find/testsuite/find.gnu/inum.xo new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/find/testsuite/find.gnu/inum.xo @@ -0,0 +1 @@ +tmp diff --git a/find/testsuite/find.gnu/ipath.exp b/find/testsuite/find.gnu/ipath.exp new file mode 100644 index 0000000..0013e48 --- /dev/null +++ b/find/testsuite/find.gnu/ipath.exp @@ -0,0 +1,5 @@ +# test for -path +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/ONE tmp/top/ONE/two +find_start p {tmp/top -ipath Tmp/TOP/one -print 2>/dev/null } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/ipath.xo b/find/testsuite/find.gnu/ipath.xo new file mode 100644 index 0000000..6ac3ca0 --- /dev/null +++ b/find/testsuite/find.gnu/ipath.xo @@ -0,0 +1 @@ +tmp/top/ONE diff --git a/find/testsuite/find.gnu/iregex1.exp b/find/testsuite/find.gnu/iregex1.exp new file mode 100644 index 0000000..c24cdf0 --- /dev/null +++ b/find/testsuite/find.gnu/iregex1.exp @@ -0,0 +1,5 @@ +# test for -iregex +exec rm -rf tmp +exec mkdir tmp tmp/d tmp/d/D tmp/d/D/d tmp/d/D/d/e +find_start p {tmp -iregex {tmp\(/d\)*} -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/iregex1.xo b/find/testsuite/find.gnu/iregex1.xo new file mode 100644 index 0000000..8901de0 --- /dev/null +++ b/find/testsuite/find.gnu/iregex1.xo @@ -0,0 +1,4 @@ +tmp +tmp/d +tmp/d/D +tmp/d/D/d diff --git a/find/testsuite/find.gnu/iwholename.exp b/find/testsuite/find.gnu/iwholename.exp new file mode 100644 index 0000000..d58656a --- /dev/null +++ b/find/testsuite/find.gnu/iwholename.exp @@ -0,0 +1,5 @@ +# test for -iwholename +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one tmp/top/one/two +find_start p {tmp/top -iwholename tmP/TOP/One -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/iwholename.xo b/find/testsuite/find.gnu/iwholename.xo new file mode 100644 index 0000000..66d2877 --- /dev/null +++ b/find/testsuite/find.gnu/iwholename.xo @@ -0,0 +1 @@ +tmp/top/one diff --git a/find/testsuite/find.gnu/lname.exp b/find/testsuite/find.gnu/lname.exp new file mode 100644 index 0000000..65f8878 --- /dev/null +++ b/find/testsuite/find.gnu/lname.exp @@ -0,0 +1,7 @@ +# tests for -lname +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/one +exec ln -s one tmp/two +find_start p {tmp -lname one -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/lname.xo b/find/testsuite/find.gnu/lname.xo new file mode 100644 index 0000000..c7b45df --- /dev/null +++ b/find/testsuite/find.gnu/lname.xo @@ -0,0 +1 @@ +tmp/two diff --git a/find/testsuite/find.gnu/mindepth-arg.exp b/find/testsuite/find.gnu/mindepth-arg.exp new file mode 100644 index 0000000..ba4d0dc --- /dev/null +++ b/find/testsuite/find.gnu/mindepth-arg.exp @@ -0,0 +1,9 @@ +# Argument validation for -mindepth and -maxdepth +proc prepare {} { + exec rm -rf tmp + exec mkdir tmp tmp/top tmp/top/one +} +foreach predicate { -mindepth -maxdepth } { + find_start p "tmp/top $predicate 0 -print -quit" {} {} prepare +} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/mindepth-arg.xo b/find/testsuite/find.gnu/mindepth-arg.xo new file mode 100644 index 0000000..ddcb130 --- /dev/null +++ b/find/testsuite/find.gnu/mindepth-arg.xo @@ -0,0 +1 @@ +tmp/top
\ No newline at end of file diff --git a/find/testsuite/find.gnu/mindepth-badarg.exp b/find/testsuite/find.gnu/mindepth-badarg.exp new file mode 100644 index 0000000..d098af0 --- /dev/null +++ b/find/testsuite/find.gnu/mindepth-badarg.exp @@ -0,0 +1,12 @@ +# Argument validation for -mindepth and -maxdepth + +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one + +foreach predicate { -mindepth -maxdepth } { + # Try a variety of bad arguments. + foreach arg { x 0x01 Fnord "" +1 1.2 -3 3e1 } { + find_start f "tmp/top $predicate $arg -quit" + } +} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/name-opt.exp b/find/testsuite/find.gnu/name-opt.exp new file mode 100644 index 0000000..0ec1d8d --- /dev/null +++ b/find/testsuite/find.gnu/name-opt.exp @@ -0,0 +1,8 @@ +# Verifies that -name is not optimized in front of -prune +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/top +exec mkdir tmp/top/one +exec touch tmp/top/one/foo +find_start p {tmp/top -prune -name foo} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/name-opt.xo b/find/testsuite/find.gnu/name-opt.xo new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/find/testsuite/find.gnu/name-opt.xo diff --git a/find/testsuite/find.gnu/name-period.exp b/find/testsuite/find.gnu/name-period.exp new file mode 100644 index 0000000..42858fe --- /dev/null +++ b/find/testsuite/find.gnu/name-period.exp @@ -0,0 +1,10 @@ +# Verifies that -name '*bar' will match quux/.foobar. +# See http://standards.ieee.org/reading/ieee/interp/1003-2-92_int/pasc-1003.2-126.html +# Also see http://savannah.gnu.org/bugs/?func=detailitem&item_id=10757 +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/top +exec mkdir tmp/top/.one +exec mkdir tmp/top/bane +find_start p {tmp/top -name \*ne -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/name-period.xo b/find/testsuite/find.gnu/name-period.xo new file mode 100644 index 0000000..53cbcdc --- /dev/null +++ b/find/testsuite/find.gnu/name-period.xo @@ -0,0 +1,2 @@ +tmp/top/bane +tmp/top/.one diff --git a/find/testsuite/find.gnu/name-slash.exp b/find/testsuite/find.gnu/name-slash.exp new file mode 100644 index 0000000..bd9a187 --- /dev/null +++ b/find/testsuite/find.gnu/name-slash.exp @@ -0,0 +1,2 @@ +# tests for '-name /' +find_start p {/ /// -maxdepth 0 -name /} diff --git a/find/testsuite/find.gnu/name-slash.xo b/find/testsuite/find.gnu/name-slash.xo new file mode 100644 index 0000000..6c24144 --- /dev/null +++ b/find/testsuite/find.gnu/name-slash.xo @@ -0,0 +1,2 @@ +/ +/// diff --git a/find/testsuite/find.gnu/no-fdleak-test.exp b/find/testsuite/find.gnu/no-fdleak-test.exp new file mode 100644 index 0000000..f823047 --- /dev/null +++ b/find/testsuite/find.gnu/no-fdleak-test.exp @@ -0,0 +1,13 @@ +# Test with the FD leak check turned off. We make this test, just to +# avoid failing to detect problems that only occur when the leak check +# is turned off. +set oldval $env(GNU_FINDUTILS_FD_LEAK_CHECK) +unset env(GNU_FINDUTILS_FD_LEAK_CHECK) + +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp tmp/fred tmp/jim + find_start p {tmp -name fred -execdir echo \{\} \; } + exec rm -rf tmp +} +set env(GNU_FINDUTILS_FD_LEAK_CHECK) $oldval diff --git a/find/testsuite/find.gnu/no-fdleak-test.xo b/find/testsuite/find.gnu/no-fdleak-test.xo new file mode 100644 index 0000000..8584084 --- /dev/null +++ b/find/testsuite/find.gnu/no-fdleak-test.xo @@ -0,0 +1 @@ +./fred diff --git a/find/testsuite/find.gnu/path.exp b/find/testsuite/find.gnu/path.exp new file mode 100644 index 0000000..40fa01e --- /dev/null +++ b/find/testsuite/find.gnu/path.exp @@ -0,0 +1,5 @@ +# test for -path +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one tmp/top/one/two +find_start p {tmp/top -path tmp/top/one -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/path.xo b/find/testsuite/find.gnu/path.xo new file mode 100644 index 0000000..66d2877 --- /dev/null +++ b/find/testsuite/find.gnu/path.xo @@ -0,0 +1 @@ +tmp/top/one diff --git a/find/testsuite/find.gnu/perm-slash.exp b/find/testsuite/find.gnu/perm-slash.exp new file mode 100644 index 0000000..252d91a --- /dev/null +++ b/find/testsuite/find.gnu/perm-slash.exp @@ -0,0 +1,19 @@ +# tests for -perm /nnn +# The slash is a GNU extension + +exec rm -rf tmp +exec mkdir tmp + +## set up a selection of test files +foreach perm { 400 200 555 700 000 050 } { + exec touch "tmp/$perm" + exec chmod $perm "tmp/$perm" +} + +# +# The -o operator normally has a short-circuit effect, +# so we have to use "-exec false \;" to make sure that +# all the parenthesised expression actually fail. +# +find_start p {tmp -mindepth 1 -perm /555 -printf "p/555 %p\n" } +# exec rm -rf tmp tmp2 diff --git a/find/testsuite/find.gnu/perm-slash.xo b/find/testsuite/find.gnu/perm-slash.xo new file mode 100644 index 0000000..f84e5b7 --- /dev/null +++ b/find/testsuite/find.gnu/perm-slash.xo @@ -0,0 +1,4 @@ +p/555 tmp/050 +p/555 tmp/555 +p/555 tmp/400 +p/555 tmp/700
\ No newline at end of file diff --git a/find/testsuite/find.gnu/perm.exp b/find/testsuite/find.gnu/perm.exp new file mode 100644 index 0000000..d4913f8 --- /dev/null +++ b/find/testsuite/find.gnu/perm.exp @@ -0,0 +1,7 @@ +# tests for -perm -0100 (-perm with -) +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/fred +exec chmod 444 tmp/fred +find_start p {tmp -perm -0100} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/perm.xo b/find/testsuite/find.gnu/perm.xo new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/find/testsuite/find.gnu/perm.xo @@ -0,0 +1 @@ +tmp diff --git a/find/testsuite/find.gnu/perm000.exp b/find/testsuite/find.gnu/perm000.exp new file mode 100644 index 0000000..9217129 --- /dev/null +++ b/find/testsuite/find.gnu/perm000.exp @@ -0,0 +1,7 @@ +# tests for -perm /000 (Savannah bug #14748). +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/fred tmp/wilma +exec chmod 000 tmp/fred +find_start p {tmp -perm /000 -print 2>/dev/null } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/perm000.xo b/find/testsuite/find.gnu/perm000.xo new file mode 100644 index 0000000..7a1f6e9 --- /dev/null +++ b/find/testsuite/find.gnu/perm000.xo @@ -0,0 +1,3 @@ +tmp +tmp/fred +tmp/wilma diff --git a/find/testsuite/find.gnu/posix-dflt.exp b/find/testsuite/find.gnu/posix-dflt.exp new file mode 100644 index 0000000..3e7d573 --- /dev/null +++ b/find/testsuite/find.gnu/posix-dflt.exp @@ -0,0 +1,10 @@ +# Verifies that the POSIX behaviour without -P or -L options is +# correctly implemented, but does this by using the GNU extension +# -printf. +exec rm -rf tmp + +exec mkdir tmp +exec ln -s /etc/passwd tmp/LINK +exec ln -s /NOSUCHFILE tmp/BROKEN + +find_start p { -P tmp/LINK tmp/BROKEN tmp -printf "%y %d %p\n" } diff --git a/find/testsuite/find.gnu/posix-dflt.xo b/find/testsuite/find.gnu/posix-dflt.xo new file mode 100644 index 0000000..7359d24 --- /dev/null +++ b/find/testsuite/find.gnu/posix-dflt.xo @@ -0,0 +1,5 @@ +d 0 tmp +l 0 tmp/BROKEN +l 0 tmp/LINK +l 1 tmp/BROKEN +l 1 tmp/LINK diff --git a/find/testsuite/find.gnu/posix-h.exp b/find/testsuite/find.gnu/posix-h.exp new file mode 100644 index 0000000..0ecbabe --- /dev/null +++ b/find/testsuite/find.gnu/posix-h.exp @@ -0,0 +1,13 @@ +# Verifies that the POSIX -H option is correctly implemented, +# but does this by using the GNU extension -printf. +exec rm -rf tmp + +exec mkdir tmp +exec ln -s /etc/passwd tmp/LINK +exec ln -s /NOSUCHFILE tmp/BROKEN + +# If the file is not on the command line, the link is not +# dereferenced, and so tmp/LINK should appear at depth 1 +# but as type "l". tmp itself appears first at depth 0 as +# a directory. +find_start p { -H tmp/LINK tmp/BROKEN tmp -printf "H1: %y %d %p\n" } diff --git a/find/testsuite/find.gnu/posix-h.xo b/find/testsuite/find.gnu/posix-h.xo new file mode 100644 index 0000000..4d503f7 --- /dev/null +++ b/find/testsuite/find.gnu/posix-h.xo @@ -0,0 +1,5 @@ +H1: d 0 tmp +H1: f 0 tmp/LINK +H1: l 0 tmp/BROKEN +H1: l 1 tmp/BROKEN +H1: l 1 tmp/LINK diff --git a/find/testsuite/find.gnu/posix-l.exp b/find/testsuite/find.gnu/posix-l.exp new file mode 100644 index 0000000..6055edf --- /dev/null +++ b/find/testsuite/find.gnu/posix-l.exp @@ -0,0 +1,10 @@ +# Verifies that the POSIX -L option is correctly implemented, +# but does this by using the GNU extension -printf. +exec rm -rf tmp + +exec mkdir tmp +exec ln -s /etc/passwd tmp/LINK +exec ln -s /NOSUCHFILE tmp/BROKEN + +# Links should all be dereferenced unless they are broken. +find_start p { -L tmp/LINK tmp/BROKEN tmp -printf "%y %d %p\n" } diff --git a/find/testsuite/find.gnu/posix-l.xo b/find/testsuite/find.gnu/posix-l.xo new file mode 100644 index 0000000..f2c7940 --- /dev/null +++ b/find/testsuite/find.gnu/posix-l.xo @@ -0,0 +1,5 @@ +d 0 tmp +f 0 tmp/LINK +f 1 tmp/LINK +l 0 tmp/BROKEN +l 1 tmp/BROKEN diff --git a/find/testsuite/find.gnu/posix-perminvalid.exp b/find/testsuite/find.gnu/posix-perminvalid.exp new file mode 100644 index 0000000..b773511 --- /dev/null +++ b/find/testsuite/find.gnu/posix-perminvalid.exp @@ -0,0 +1,16 @@ +# tests for non-POSIX-compliant argument to -perm +# Remember any previous value of POSIXLY_CORRECT (if there was one) +if [info exists env(POSIXLY_CORRECT)] { + set oldval env(POSIXLY_CORRECT) +} + +# Set POSIXLY_CORRECT and perform the test +set env(POSIXLY_CORRECT) 1 +find_start f {. -perm +a+x} + +# Set POSIXLY_CORRECT to its previous value +if [info exists oldval] { + set env(POSIXLY_CORRECT) $oldval +} else { + unset env(POSIXLY_CORRECT) +} diff --git a/find/testsuite/find.gnu/print0.exp b/find/testsuite/find.gnu/print0.exp new file mode 100644 index 0000000..11a3cb6 --- /dev/null +++ b/find/testsuite/find.gnu/print0.exp @@ -0,0 +1,5 @@ +# test for -print0. +exec rm -rf tmp +exec touch tmp +find_start p { tmp -print0 } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/print0.xo b/find/testsuite/find.gnu/print0.xo Binary files differnew file mode 100644 index 0000000..b947b3b --- /dev/null +++ b/find/testsuite/find.gnu/print0.xo diff --git a/find/testsuite/find.gnu/print_stdout.exp b/find/testsuite/find.gnu/print_stdout.exp new file mode 100644 index 0000000..5bbeefa --- /dev/null +++ b/find/testsuite/find.gnu/print_stdout.exp @@ -0,0 +1,5 @@ +# test for -fprint +exec rm -rf tmp +exec touch tmp +find_start p { tmp -fprint /dev/stdout } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/print_stdout.xo b/find/testsuite/find.gnu/print_stdout.xo new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/find/testsuite/find.gnu/print_stdout.xo @@ -0,0 +1 @@ +tmp diff --git a/find/testsuite/find.gnu/printf-h.exp b/find/testsuite/find.gnu/printf-h.exp new file mode 100644 index 0000000..fb0187c --- /dev/null +++ b/find/testsuite/find.gnu/printf-h.exp @@ -0,0 +1,5 @@ +# Test case for Savannah bug ID #12085. +exec rm -rf tmp +exec touch tmp +find_start p {tmp -printf "RESULT: %h %f\n" } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/printf-h.xo b/find/testsuite/find.gnu/printf-h.xo new file mode 100644 index 0000000..dc6ce01 --- /dev/null +++ b/find/testsuite/find.gnu/printf-h.xo @@ -0,0 +1 @@ +RESULT: . tmp diff --git a/find/testsuite/find.gnu/printf-nonlocal-symlink.exp b/find/testsuite/find.gnu/printf-nonlocal-symlink.exp new file mode 100644 index 0000000..f8e61e1 --- /dev/null +++ b/find/testsuite/find.gnu/printf-nonlocal-symlink.exp @@ -0,0 +1,7 @@ +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/foo +exec touch tmp/foo/file +exec ln -s file tmp/foo/LINK +find_start p {tmp -type l -printf "%p: %Y %y\n" } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/printf-nonlocal-symlink.xo b/find/testsuite/find.gnu/printf-nonlocal-symlink.xo new file mode 100644 index 0000000..fcb338a --- /dev/null +++ b/find/testsuite/find.gnu/printf-nonlocal-symlink.xo @@ -0,0 +1 @@ +tmp/foo/LINK: f l diff --git a/find/testsuite/find.gnu/printf-reserved.exp b/find/testsuite/find.gnu/printf-reserved.exp new file mode 100644 index 0000000..3072312 --- /dev/null +++ b/find/testsuite/find.gnu/printf-reserved.exp @@ -0,0 +1,3 @@ +find_start f { . -maxdepth 0 -printf '%(' } +find_start f { . -maxdepth 0 -printf '%\{' } +find_start f { . -maxdepth 0 -printf '%\[' } diff --git a/find/testsuite/find.gnu/printf-slash.exp b/find/testsuite/find.gnu/printf-slash.exp new file mode 100644 index 0000000..3f46023 --- /dev/null +++ b/find/testsuite/find.gnu/printf-slash.exp @@ -0,0 +1 @@ +find_start p {/ /// -maxdepth 0 -printf "%p %f\\n"} diff --git a/find/testsuite/find.gnu/printf-slash.xo b/find/testsuite/find.gnu/printf-slash.xo new file mode 100644 index 0000000..50f8192 --- /dev/null +++ b/find/testsuite/find.gnu/printf-slash.xo @@ -0,0 +1,2 @@ +/ / +/// / diff --git a/find/testsuite/find.gnu/printf-symlink.exp b/find/testsuite/find.gnu/printf-symlink.exp new file mode 100644 index 0000000..6acc3e6 --- /dev/null +++ b/find/testsuite/find.gnu/printf-symlink.exp @@ -0,0 +1,6 @@ +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/file +exec ln -s file tmp/LINK +find_start p {tmp/LINK -printf "RESULT: %y %Y %p\n" -printf "RESULT2: %Y %y %p\n" } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/printf-symlink.xo b/find/testsuite/find.gnu/printf-symlink.xo new file mode 100644 index 0000000..cc2b69c --- /dev/null +++ b/find/testsuite/find.gnu/printf-symlink.xo @@ -0,0 +1,2 @@ +RESULT: l f tmp/LINK +RESULT2: f l tmp/LINK diff --git a/find/testsuite/find.gnu/printf.exp b/find/testsuite/find.gnu/printf.exp new file mode 100644 index 0000000..ba8e75b --- /dev/null +++ b/find/testsuite/find.gnu/printf.exp @@ -0,0 +1,6 @@ +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/file +exec chmod 600 tmp/file +find_start p {tmp -type f -printf "a %d\n" -printf "b %f\n" -printf "c %h\n" -printf "d %H\n" -printf "e %l\n" -printf "f %m\n" -printf "g %n\n" -printf "h %p\n" -printf "i %P\n" -printf "j %y\n" -printf "k %Y\n" -printf "percent it%%works%%\n" -printf "string-right !%10p!\n" -printf "string-left !%-10p!\n" -printf "trunc-R !%10.6p!\n" -printf "trunc-L !%-10.6p!\n" -printf "a5 !%5d!\n" -printf "a05 !%05d!\n" -printf "a+ %+d\n" } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/printf.xo b/find/testsuite/find.gnu/printf.xo new file mode 100644 index 0000000..e607293 --- /dev/null +++ b/find/testsuite/find.gnu/printf.xo @@ -0,0 +1,19 @@ +a 1 +a+ +1 +a5 ! 1! +a05 !00001! +b file +c tmp +d tmp +e +f 600 +g 1 +h tmp/file +i file +j f +k f +percent it%works% +string-left !tmp/file ! +string-right ! tmp/file! +trunc-L !tmp/fi ! +trunc-R ! tmp/fi! diff --git a/find/testsuite/find.gnu/printfHdfl.exp b/find/testsuite/find.gnu/printfHdfl.exp new file mode 100644 index 0000000..517ecc5 --- /dev/null +++ b/find/testsuite/find.gnu/printfHdfl.exp @@ -0,0 +1,2 @@ +# verify that %H with no argument assumes "." +find_start p { -maxdepth 0 -printf "%H" } diff --git a/find/testsuite/find.gnu/printfHdfl.xo b/find/testsuite/find.gnu/printfHdfl.xo new file mode 100644 index 0000000..9c558e3 --- /dev/null +++ b/find/testsuite/find.gnu/printfHdfl.xo @@ -0,0 +1 @@ +. diff --git a/find/testsuite/find.gnu/prune-default-print.exp b/find/testsuite/find.gnu/prune-default-print.exp new file mode 100644 index 0000000..b43a6b9 --- /dev/null +++ b/find/testsuite/find.gnu/prune-default-print.exp @@ -0,0 +1,5 @@ +# Verifies that default -print is used with -prune +exec rm -rf tmp +exec mkdir tmp +find_start p {tmp -prune} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/prune-default-print.xo b/find/testsuite/find.gnu/prune-default-print.xo new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/find/testsuite/find.gnu/prune-default-print.xo @@ -0,0 +1 @@ +tmp diff --git a/find/testsuite/find.gnu/quit.exp b/find/testsuite/find.gnu/quit.exp new file mode 100644 index 0000000..610ad7f --- /dev/null +++ b/find/testsuite/find.gnu/quit.exp @@ -0,0 +1,5 @@ +# test for -quit. +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one tmp/top/one/foo tmp/top/two +find_start p {tmp/top/one tmp/top/two -depth -print -name one -quit } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/quit.xo b/find/testsuite/find.gnu/quit.xo new file mode 100644 index 0000000..14c1d8d --- /dev/null +++ b/find/testsuite/find.gnu/quit.xo @@ -0,0 +1,2 @@ +tmp/top/one/foo +tmp/top/one diff --git a/find/testsuite/find.gnu/regex1.exp b/find/testsuite/find.gnu/regex1.exp new file mode 100644 index 0000000..071dcaf --- /dev/null +++ b/find/testsuite/find.gnu/regex1.exp @@ -0,0 +1,5 @@ +# test for -regex +exec rm -rf tmp +exec mkdir tmp tmp/d tmp/d/d tmp/d/d/d tmp/d/d/d/e +find_start p {tmp -regex {tmp\(/d\)*} -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/regex1.xo b/find/testsuite/find.gnu/regex1.xo new file mode 100644 index 0000000..c4259bb --- /dev/null +++ b/find/testsuite/find.gnu/regex1.xo @@ -0,0 +1,4 @@ +tmp +tmp/d +tmp/d/d +tmp/d/d/d diff --git a/find/testsuite/find.gnu/regex2.exp b/find/testsuite/find.gnu/regex2.exp new file mode 100644 index 0000000..71cc1e3 --- /dev/null +++ b/find/testsuite/find.gnu/regex2.exp @@ -0,0 +1,5 @@ +# test for -regex +exec rm -rf tmp +exec mkdir tmp tmp/d tmp/d/d tmp/d/d/d tmp/d/d/d/e +find_start p {tmp -regextype posix-extended -regex {tmp(/d)*} -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/regex2.xo b/find/testsuite/find.gnu/regex2.xo new file mode 100644 index 0000000..c4259bb --- /dev/null +++ b/find/testsuite/find.gnu/regex2.xo @@ -0,0 +1,4 @@ +tmp +tmp/d +tmp/d/d +tmp/d/d/d diff --git a/find/testsuite/find.gnu/samefile-copy.exp b/find/testsuite/find.gnu/samefile-copy.exp new file mode 100644 index 0000000..69e47cd --- /dev/null +++ b/find/testsuite/find.gnu/samefile-copy.exp @@ -0,0 +1,8 @@ +# test for -samefile +exec rm -rf tmp +exec mkdir tmp tmp/one tmp/two +exec touch tmp/file1 tmp/file2 +exec cp tmp/file1 tmp/one/link +exec cp tmp/file2 tmp/two/link +find_start p {tmp/one tmp/two -samefile tmp/file1 -print} +# exec rm -rf tmp diff --git a/find/testsuite/find.gnu/samefile-copy.xo b/find/testsuite/find.gnu/samefile-copy.xo new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-copy.xo diff --git a/find/testsuite/find.gnu/samefile-link.exp b/find/testsuite/find.gnu/samefile-link.exp new file mode 100644 index 0000000..e288160 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-link.exp @@ -0,0 +1,9 @@ +# test for -samefile +exec rm -rf tmp +exec mkdir tmp tmp/one tmp/two +exec touch tmp/file1 tmp/file2 +exec ln tmp/file1 tmp/one/link +exec ln -s tmp/file1 tmp/one/symlink +exec ln tmp/file2 tmp/two/link +find_start p {tmp/one tmp/two -samefile tmp/file1 -print} +# exec rm -rf tmp diff --git a/find/testsuite/find.gnu/samefile-link.xo b/find/testsuite/find.gnu/samefile-link.xo new file mode 100644 index 0000000..e53b73e --- /dev/null +++ b/find/testsuite/find.gnu/samefile-link.xo @@ -0,0 +1 @@ +tmp/one/link diff --git a/find/testsuite/find.gnu/samefile-missing.exp b/find/testsuite/find.gnu/samefile-missing.exp new file mode 100644 index 0000000..2d509c4 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-missing.exp @@ -0,0 +1,2 @@ +# test for diagnosis of the fact that the argument to -samefile is missing +find_start f ". -samefile" diff --git a/find/testsuite/find.gnu/samefile-p-brokenlink.exp b/find/testsuite/find.gnu/samefile-p-brokenlink.exp new file mode 100644 index 0000000..8ae1fad --- /dev/null +++ b/find/testsuite/find.gnu/samefile-p-brokenlink.exp @@ -0,0 +1,11 @@ +# test for find -P -samefile with a broken link +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/file1 +exec ln tmp/file1 tmp/link +exec ln -s tmp/file1 tmp/symlink +exec ln -s tmp/file2 tmp/broken +exec ln tmp/broken tmp/blink + +find_start p { -P tmp -samefile tmp/broken -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/samefile-p-brokenlink.xo b/find/testsuite/find.gnu/samefile-p-brokenlink.xo new file mode 100644 index 0000000..aaa98f3 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-p-brokenlink.xo @@ -0,0 +1,2 @@ +tmp/blink +tmp/broken
\ No newline at end of file diff --git a/find/testsuite/find.gnu/samefile-same.exp b/find/testsuite/find.gnu/samefile-same.exp new file mode 100644 index 0000000..739f6c6 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-same.exp @@ -0,0 +1,6 @@ +# test for -samefile +exec rm -rf tmp +exec mkdir tmp tmp/one tmp/two +exec touch tmp/file +find_start p {tmp tmp/file -samefile tmp/file -print} +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/samefile-same.xo b/find/testsuite/find.gnu/samefile-same.xo new file mode 100644 index 0000000..061fd95 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-same.xo @@ -0,0 +1,2 @@ +tmp/file +tmp/file diff --git a/find/testsuite/find.gnu/samefile-symlink.exp b/find/testsuite/find.gnu/samefile-symlink.exp new file mode 100644 index 0000000..1c6aa1f --- /dev/null +++ b/find/testsuite/find.gnu/samefile-symlink.exp @@ -0,0 +1,10 @@ +# test for -samefile +exec rm -rf tmp +exec mkdir tmp tmp/one tmp/two +exec touch tmp/file1 tmp/file2 +exec ln tmp/file1 tmp/one/link +exec ln -s ../file1 tmp/one/symlink +exec ln tmp/file2 tmp/two/link +exec ln -s ../file2 tmp/two/symlink +find_start p { -L tmp/one tmp/two -samefile tmp/file1 -print} +# exec rm -rf tmp diff --git a/find/testsuite/find.gnu/samefile-symlink.xo b/find/testsuite/find.gnu/samefile-symlink.xo new file mode 100644 index 0000000..ca1e727 --- /dev/null +++ b/find/testsuite/find.gnu/samefile-symlink.xo @@ -0,0 +1,2 @@ +tmp/one/link +tmp/one/symlink diff --git a/find/testsuite/find.gnu/sv-bug-12230.exp b/find/testsuite/find.gnu/sv-bug-12230.exp new file mode 100644 index 0000000..3af22c6 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-12230.exp @@ -0,0 +1,14 @@ +# Bug report by Dmitry V. Levin. +# +# The command: +# find tmp -false -execdir echo == {} + +# Actually produces one line of output. It +# should produce none, because the echo command +# should never be invoked. +# +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp + find_start p { tmp -false -execdir echo == "{}" + } + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/sv-bug-17477.exp b/find/testsuite/find.gnu/sv-bug-17477.exp new file mode 100644 index 0000000..2cc7fe3 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-17477.exp @@ -0,0 +1,2 @@ +# verify that % with no argument fails gracefully +find_start f { -maxdepth 0 -printf "test: %" } diff --git a/find/testsuite/find.gnu/sv-bug-17490.exp b/find/testsuite/find.gnu/sv-bug-17490.exp new file mode 100644 index 0000000..f29bebf --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-17490.exp @@ -0,0 +1,4 @@ +# test for Savannah bug #17490 +# +# That bug was a coredump if the argument to -regex was the final argument. +find_start p {. -maxdepth 0 -regex x } diff --git a/find/testsuite/find.gnu/sv-bug-17782.exp b/find/testsuite/find.gnu/sv-bug-17782.exp new file mode 100644 index 0000000..db6dba2 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-17782.exp @@ -0,0 +1,15 @@ +# Savannah bug #17782. +# While -execdir echo blah {} works, -execdir echo "blah {}" doesn't. +# The bug is that the ./ prefix is prepended to the argument containing the +# braces, not to the expansion of the braces, so you get output like +# ./blah foo +# instead of +# blah ./foo +# +if { [ safe_path ] } { + exec rm -rf tmp + exec mkdir tmp + exec touch tmp/foo + find_start p { tmp -name foo -execdir echo "saw {}" \; } + exec rm -rf tmp +} diff --git a/find/testsuite/find.gnu/sv-bug-17782.xo b/find/testsuite/find.gnu/sv-bug-17782.xo new file mode 100644 index 0000000..2bde550 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-17782.xo @@ -0,0 +1 @@ +saw ./foo
\ No newline at end of file diff --git a/find/testsuite/find.gnu/sv-bug-18222.exp b/find/testsuite/find.gnu/sv-bug-18222.exp new file mode 100644 index 0000000..148010a --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-18222.exp @@ -0,0 +1,8 @@ +# Test for Savannah bug #18222 +# +# That bug was a case were the expansion of %H is truncated if the name +# of the second start point is longer than that of the first. +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/short tmp/longer +find_start p { tmp/short tmp/longer -printf "%H\n" } diff --git a/find/testsuite/find.gnu/sv-bug-18222.xo b/find/testsuite/find.gnu/sv-bug-18222.xo new file mode 100644 index 0000000..4f5f863 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-18222.xo @@ -0,0 +1,2 @@ +tmp/short +tmp/longer diff --git a/find/testsuite/find.gnu/sv-bug-24169.exp b/find/testsuite/find.gnu/sv-bug-24169.exp new file mode 100644 index 0000000..120a18b --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-24169.exp @@ -0,0 +1,47 @@ +# Bug report by Joey Hess. +# +# The command: +# find -neweraa +# is not valid because there is a missing argument. +# The result should be a clean exit with nonzero status. +# However, it segfaults in 4.4.0. +# + +global FTSFIND +if {[which $FTSFIND] == 0} then { + error "$FTSFIND, program does not exist" + exit 1 +} + +set scriptname [info script] +set testbase [file rootname $scriptname] +set test [file tail $testbase] +set testname "$test.generic" + +set cmd "$FTSFIND -neweraa" +set expected 1 + +send_log "$cmd\n" +eval spawn -noecho $cmd +expect { + eof { set result [wait] } +} +send_log "result is '$result'\n" +if { [ lindex $result 2 ] == 0 } then { + set status [ lindex $result 3] + if { [llength $result] > 4 } then { + if { [lindex $result 4] == "CHILDKILLED" } then { + fail "$testname, $cmd was killed: [lrange $result 5 end]" + } else { + unresolved "$testname, $cmd had unexpected extended status $result" + } + } else { + if { $status != 1 } then { + unresolved "$testname, $cmd had unexpected status $status" + } else { + pass "$testname" + } + } +} else { + unresolved "$testname, failed to run $cmd" +} diff --git a/find/testsuite/find.gnu/sv-bug-27563-execdir.exp b/find/testsuite/find.gnu/sv-bug-27563-execdir.exp new file mode 100644 index 0000000..c67fc88 --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-27563-execdir.exp @@ -0,0 +1,6 @@ +# tests for Savannah bug 27563 (result of find -L -exec ls {} \;) +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/yyyy +find_start p {-L tmp -name yyyy -execdir ls \{\} \; } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/sv-bug-27563-execdir.xo b/find/testsuite/find.gnu/sv-bug-27563-execdir.xo new file mode 100644 index 0000000..285260b --- /dev/null +++ b/find/testsuite/find.gnu/sv-bug-27563-execdir.xo @@ -0,0 +1 @@ +./yyyy diff --git a/find/testsuite/find.gnu/true.exp b/find/testsuite/find.gnu/true.exp new file mode 100644 index 0000000..3da595b --- /dev/null +++ b/find/testsuite/find.gnu/true.exp @@ -0,0 +1,5 @@ +# test for -true. +exec rm -rf tmp +exec mkdir tmp tmp/fred tmp/fred/jim +find_start p { tmp -depth -print -true -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/true.xo b/find/testsuite/find.gnu/true.xo new file mode 100644 index 0000000..8484390 --- /dev/null +++ b/find/testsuite/find.gnu/true.xo @@ -0,0 +1,6 @@ +tmp/fred/jim +tmp/fred/jim +tmp/fred +tmp/fred +tmp +tmp diff --git a/find/testsuite/find.gnu/used-invarg.exp b/find/testsuite/find.gnu/used-invarg.exp new file mode 100644 index 0000000..966341f --- /dev/null +++ b/find/testsuite/find.gnu/used-invarg.exp @@ -0,0 +1,2 @@ +# tests for invalid argument to -used +find_start f {. -used ZZ} diff --git a/find/testsuite/find.gnu/used-missing.exp b/find/testsuite/find.gnu/used-missing.exp new file mode 100644 index 0000000..6218433 --- /dev/null +++ b/find/testsuite/find.gnu/used-missing.exp @@ -0,0 +1,2 @@ +# tests for missing argument to -used +find_start f {. -used } diff --git a/find/testsuite/find.gnu/user-invalid.exp b/find/testsuite/find.gnu/user-invalid.exp new file mode 100644 index 0000000..ee1d02a --- /dev/null +++ b/find/testsuite/find.gnu/user-invalid.exp @@ -0,0 +1,4 @@ +# tests for invalid argument to -user +foreach user { : "" 14JJ 10.3 -4 } { + find_start f ". -user $user" +} diff --git a/find/testsuite/find.gnu/wholename.exp b/find/testsuite/find.gnu/wholename.exp new file mode 100644 index 0000000..128d1ac --- /dev/null +++ b/find/testsuite/find.gnu/wholename.exp @@ -0,0 +1,5 @@ +# test for -wholename +exec rm -rf tmp +exec mkdir tmp tmp/top tmp/top/one tmp/top/one/two +find_start p {tmp/top -wholename tmp/top/one -print } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/wholename.xo b/find/testsuite/find.gnu/wholename.xo new file mode 100644 index 0000000..66d2877 --- /dev/null +++ b/find/testsuite/find.gnu/wholename.xo @@ -0,0 +1 @@ +tmp/top/one diff --git a/find/testsuite/find.gnu/xtype-symlink.exp b/find/testsuite/find.gnu/xtype-symlink.exp new file mode 100644 index 0000000..d66a5c0 --- /dev/null +++ b/find/testsuite/find.gnu/xtype-symlink.exp @@ -0,0 +1,6 @@ +exec rm -rf tmp +exec mkdir tmp +exec touch tmp/file +exec ln -s file tmp/LINK +find_start p {tmp/LINK -xtype f } +exec rm -rf tmp diff --git a/find/testsuite/find.gnu/xtype-symlink.xo b/find/testsuite/find.gnu/xtype-symlink.xo new file mode 100644 index 0000000..f46bde2 --- /dev/null +++ b/find/testsuite/find.gnu/xtype-symlink.xo @@ -0,0 +1 @@ +tmp/LINK diff --git a/find/testsuite/find.gnu/xtype.exp b/find/testsuite/find.gnu/xtype.exp new file mode 100644 index 0000000..62cb749 --- /dev/null +++ b/find/testsuite/find.gnu/xtype.exp @@ -0,0 +1,8 @@ +# checks for the -xtype test. +exec rm -rf tmp + +exec mkdir tmp +exec ln -s /etc/passwd tmp/LINK +exec ln -s /NOSUCHFILE tmp/BROKEN + +find_start p { -H tmp/LINK tmp/BROKEN tmp -xtype l -printf "xtype is l: %p\n" , \! -xtype l -printf "xtype is not l: %p\n" } diff --git a/find/testsuite/find.gnu/xtype.xo b/find/testsuite/find.gnu/xtype.xo new file mode 100644 index 0000000..92b74ed --- /dev/null +++ b/find/testsuite/find.gnu/xtype.xo @@ -0,0 +1,5 @@ +xtype is l: tmp/LINK +xtype is l: tmp/BROKEN +xtype is not l: tmp +xtype is not l: tmp/LINK +xtype is l: tmp/BROKEN |