mirror of
https://https.git.savannah.gnu.org/git/coreutils.git
synced 2026-01-26 15:29:07 +00:00
tests: improve test for a working setfacl
Prompted by a test framework failure of tests/mkdir/p-acl.sh on armv7l: The previous test for a working setfacl was not sufficient in some circumstances. * init.cfg (require_setfacl_): Call setfacl twice with conflictive ACL specs, and use ACL specs which can't be mapped into regular file permission bits. Document the reasons.
This commit is contained in:
parent
d134211979
commit
5d7591d0ed
30
init.cfg
30
init.cfg
@ -192,9 +192,37 @@ require_valgrind_()
|
||||
skip_ "requires a working valgrind"
|
||||
}
|
||||
|
||||
# Skip the current test if setfacl doesn't work on the current file system,
|
||||
# which could happen if not installed, or if ACLs are not supported by the
|
||||
# kernel or the file system, or are turned off via mount options.
|
||||
#
|
||||
# Work around the following two issues:
|
||||
#
|
||||
# 1) setfacl maps ACLs into file permission bits if on "noacl" file systems.
|
||||
#
|
||||
# On file systems which do not support ACLs (e.g. ext4 mounted with -o noacl),
|
||||
# setfacl operates on the regular file permission bits, and only fails if the
|
||||
# given ACL spec does not fit into there. Thus, to test if ACLs really work
|
||||
# on the current file system, pass an ACL spec which can't be mapped that way.
|
||||
# "Default" ACLs (-d) seem to fulfill this requirement.
|
||||
#
|
||||
# 2) setfacl only invokes the underlying system call if the ACL would change.
|
||||
#
|
||||
# If the given ACL spec would not change the ACLs on the file, then setfacl
|
||||
# does not invoke the underlying system call - setxattr(). Therefore, to test
|
||||
# if setting ACLs really works on the current file system, call setfacl twice
|
||||
# with conflictive ACL specs.
|
||||
require_setfacl_()
|
||||
{
|
||||
setfacl -m user::rwx . \
|
||||
local d='acltestdir_'
|
||||
mkdir $d || framework_failure_
|
||||
local f=0
|
||||
|
||||
setfacl -d -m user::r-x $d \
|
||||
&& setfacl -d -m user::rwx $d \
|
||||
|| f=1
|
||||
rm -rf $d || framework_failure_
|
||||
test $f = 0 \
|
||||
|| skip_ "setfacl does not work on the current file system"
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user