From: Pádraig Brady Date: Sun, 30 Nov 2025 15:00:23 +0000 (+0000) Subject: tests: avoid skip due to missing nouser_xattr support X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4ca0a1d22fbe482a74e0213a875d424823f7d643;p=thirdparty%2Fcoreutils.git tests: avoid skip due to missing nouser_xattr support * tests/cp/cp-mv-enotsup-xattr.sh: The nouser_xattr option is not supported by ext2 since about 2022. Instead use ramfs to ensure xattrs are not supported. We also remove part of the test that relied on partial xattr support. Fixes https://github.com/coreutils/coreutils/issues/135 --- diff --git a/tests/cp/cp-mv-enotsup-xattr.sh b/tests/cp/cp-mv-enotsup-xattr.sh index 2d12a3aca0..0e8ea53884 100755 --- a/tests/cp/cp-mv-enotsup-xattr.sh +++ b/tests/cp/cp-mv-enotsup-xattr.sh @@ -33,19 +33,24 @@ make_fs() { where="$1" opts="$2" - fs="$where.bin" - - dd if=/dev/zero of="$fs" bs=8192 count=200 > /dev/null 2>&1 \ - || skip=1 - mkdir "$where" || skip=1 - mkfs -t ext2 -F "$fs" || - skip_ "failed to create ext2 file system" - mount -oloop,$opts "$fs" "$where" || skip=1 - echo test > "$where"/f || skip=1 - test -s "$where"/f || skip=1 - - test $skip = 1 && - skip_ "insufficient mount/ext2 support" + mkdir "$where" || framework_failure_ + + if test "$opts" = user_xattr; then + fs="$where.bin" + dd if=/dev/zero of="$fs" bs=8192 count=200 > /dev/null 2>&1 || skip=1 + mkfs -t ext2 -F "$fs" || skip_ "failed to create ext2 file system" + mount -oloop,$opts "$fs" "$where" || skip=1 + else + mount -t ramfs ramfs "$where" || skip=1 + fi + + echo test > "$where"/f && test -s "$where"/f || skip=1 + + test $skip = 1 && skip_ 'insufficient mount/file system support' + + test "$opts" = nouser_xattr && + setfattr -n user.test -v value "$where"/f 2>/dev/null && + skip_ 'setfattr worked?' } make_fs noxattr nouser_xattr @@ -106,27 +111,5 @@ mv xattr/a noxattr/ 2>err || fail=1 test -s noxattr/a || fail=1 # destination file must not be empty compare /dev/null err || fail=1 -# This should pass and copy xattrs of the symlink -# since the xattrs used here are not in the 'user.' namespace. -# Up to and including coreutils-8.22 xattrs of symlinks -# were not copied across file systems. -ln -s 'foo' xattr/symlink || framework_failure_ -# Note 'user.' namespace is only supported on regular files/dirs -# so use the 'trusted.' namespace here -txattr='trusted.overlay.whiteout' -if setfattr -hn "$txattr" -v y xattr/symlink; then - # Note only root can read the 'trusted.' namespace - if getfattr -h -m- -d xattr/symlink | grep -F "$txattr"; then - mv xattr/symlink noxattr/ 2>err || fail=1 - if grep '^#define USE_XATTR 1' $CONFIG_HEADER > /dev/null; then - getfattr -h -m- -d noxattr/symlink | grep -F "$txattr" || fail=1 - fi - compare /dev/null err || fail=1 - else - echo "failed to get '$txattr' xattr. skipping symlink check" >&2 - fi -else - echo "failed to set '$txattr' xattr. skipping symlink check" >&2 -fi Exit $fail