X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-file-has-acl.sh;h=db6738870adaccaacfa0d56f35e93194d55ce398;hb=4b95adc9f2ec340f80d4b9ee81938d1070de0c67;hp=bb5568c228c65e82cfd3a7798a90d36e76288bfe;hpb=456355401219fdc2cb203baedd2bf176572e8310;p=gnulib.git diff --git a/tests/test-file-has-acl.sh b/tests/test-file-has-acl.sh index bb5568c22..db6738870 100755 --- a/tests/test-file-has-acl.sh +++ b/tests/test-file-has-acl.sh @@ -3,6 +3,12 @@ # Show all commands when run with environment variable VERBOSE=yes. test -z "$VERBOSE" || set -x +test "$USE_ACL" = 0 && + { + echo "Skipping test: insufficient ACL support" + exit 77 + } + # func_tmpdir # creates a temporary directory. # Sets variable @@ -106,18 +112,6 @@ cd "$builddir" || fi fi - # func_test_has_acl file expected - # tests the result of the file_has_acl function on file, and checks that it - # matches the expected value. - func_test_has_acl () - { - res=`"$builddir"/test-file-has-acl${EXEEXT} "$1"` - test "$res" = "$2" || { - echo "file_has_acl(\"$1\") returned $res, expected $2" 1>&2 - exit 1 - } - } - # func_test_file_has_acl file expected # tests the result of the file_has_acl function on file, and checks that it # matches the expected value. @@ -189,18 +183,27 @@ cd "$builddir" || func_test_has_acl tmpfile0 no + mkdir tmpdir0 + func_test_has_acl tmpdir0 no + if test $acl_flavor != none; then + # A POSIX compliant 'id' program. + if test -f /usr/xpg4/bin/id; then + ID=/usr/xpg4/bin/id + else + ID=id + fi # Use a user and group id different from the current one, to avoid # redundant/ambiguous ACLs. - myuid=`id -u` - mygid=`id -g` + myuid=`$ID -u` + mygid=`$ID -g` auid=1 if test "$auid" = "$myuid"; then auid=2; fi agid=1 if test "$agid" = "$mygid"; then agid=2; fi case $acl_flavor in - linux | cygwin | freebsd | solaris) + linux | freebsd | solaris) # Set an ACL for a user. if setfacl -m user:$auid:1 tmpfile0; then @@ -214,11 +217,11 @@ cd "$builddir" || *) setfacl -d user:$auid:1 tmpfile0 ;; esac - # On Linux, the ACL for the mask is implicitly added. + # On Linux and FreeBSD, the ACL for the mask is implicitly added. # On Solaris, it is always there. case $acl_flavor in - linux) func_test_has_acl tmpfile0 yes ;; - *) func_test_has_acl tmpfile0 no ;; + linux | freebsd) func_test_has_acl tmpfile0 yes ;; + *) func_test_has_acl tmpfile0 no ;; esac # Remove the ACL for the mask, if it was implicitly added. @@ -232,6 +235,21 @@ cd "$builddir" || fi ;; + cygwin) + + # Set an ACL for a group. + if setfacl -m group:0:1 tmpfile0; then + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the group. + setfacl -d group:0 tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + ;; + hpux) # Set an ACL for a user. @@ -319,6 +337,7 @@ cd "$builddir" || fi rm -f tmpfile[0-9] tmp.err + rm -rf tmpdir0 ) || exit 1 rm -rf "$tmp"