From ffbd8c4878dc74cfa44a1cc9e64be17fa3be8499 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?=
Date: Mon, 1 Dec 2025 13:23:45 +0000
Subject: [PATCH] tests: rm: avoid usually skipped non root test
* tests/rm/fail-eperm.xpl: Remove this usually skipped non-root test.
* tests/rm/fail-2eperm.sh: Add the test to this root test instead.
* tests/local.mk: Remove the reference to *.xpl.
---
tests/local.mk | 3 +-
tests/rm/fail-2eperm.sh | 28 ++++----
tests/rm/fail-eperm.xpl | 150 ----------------------------------------
3 files changed, 17 insertions(+), 164 deletions(-)
delete mode 100755 tests/rm/fail-eperm.xpl
diff --git a/tests/local.mk b/tests/local.mk
index 4ae0037192..b7fb84e3e2 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -23,7 +23,7 @@ root_tests = $(all_root_tests)
EXTRA_DIST += $(all_tests)
-TEST_EXTENSIONS = .sh .pl .xpl
+TEST_EXTENSIONS = .sh .pl
if HAVE_PERL
TESTSUITE_PERL = $(PERL)
@@ -207,7 +207,6 @@ all_tests = \
tests/rm/empty-name.pl \
tests/rm/f-1.sh \
tests/rm/fail-eacces.sh \
- tests/rm/fail-eperm.xpl \
tests/tail/assert.sh \
tests/rm/hash.sh \
tests/rm/i-1.sh \
diff --git a/tests/rm/fail-2eperm.sh b/tests/rm/fail-2eperm.sh
index f23c891640..3d16f3baaf 100755
--- a/tests/rm/fail-2eperm.sh
+++ b/tests/rm/fail-2eperm.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Like fail-eperm, but the failure must be for a file encountered
-# while trying to remove the containing directory with the sticky bit set.
+# Ensure that rm gives the expected diagnostic when failing to remove a file
+# owned by some other user in a directory with the sticky bit set.
# Copyright (C) 2003-2025 Free Software Foundation, Inc.
@@ -40,18 +40,22 @@ case $rm_version in
$PACKAGE_VERSION) ;;
*) skip_ "cannot access just-built rm as user $NON_ROOT_USERNAME";;
esac
-chroot --skip-chdir --user=$NON_ROOT_USERNAME / \
- env PATH="$PATH" rm -rf a 2> out-t && fail=1
-# On some systems, we get 'Not owner'. Convert it.
-# On other systems (HPUX), we get 'Permission denied'. Convert it, too.
-onp='Operation not permitted'
-sed "s/Not owner/$onp/;s/Permission denied/$onp/" out-t > out
-cat <<\EOF > exp
-rm: cannot remove 'a/b': Operation not permitted
-EOF
+# Ensure that rm gives the expected diagnostic when
+# failing to remove the file directly, or when traversed
+for file in 'a/b' 'a'; do
+ echo "$file" | grep / && recurse='-r'
+ returns_ 1 chroot --skip-chdir --user=$NON_ROOT_USERNAME / \
+ env PATH="$PATH" rm $recurse -f "$file" 2> out-t || fail=1
-compare exp out || fail=1
+ # On some systems, we get 'Not owner'. Convert it.
+ # On other systems (HPUX), we get 'Permission denied'. Convert it, too.
+ onp='Operation not permitted'
+ sed "s/Not owner/$onp/;s/Permission denied/$onp/" out-t > out
+
+ echo "rm: cannot remove 'a/b': Operation not permitted" > exp
+ compare exp out || fail=1
+done
Exit $fail
diff --git a/tests/rm/fail-eperm.xpl b/tests/rm/fail-eperm.xpl
deleted file mode 100755
index ab75630a8c..0000000000
--- a/tests/rm/fail-eperm.xpl
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/perl -Tw
-# Ensure that rm gives the expected diagnostic when failing to remove a file
-# owned by some other user in a directory with the sticky bit set.
-
-# Copyright (C) 2002-2025 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see