# 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 }