On 31/07/2020 18:56, Bernhard Voelker wrote:
On 2020-07-31 16:32, Nick Alcock wrote:
I get an ERROR when running rmdir/ignore.sh as root (but not when
running as non-root). [...]
ERROR: tests/rmdir/ignore
=========================
[...]
+ mkdir -p x/y
+ chmod a-w x
+ returns_ 1 rmdir --ignore-fail-on-non-empty x/y
+ fail=1
Thanks for reporting this issue.
Indeed, this test does not work as root.
The comment in the test explains that it expects an EPERM error:
# Ensure that with --ignore-fail-on-non-empty, we still fail, e.g., for
EPERM.
# Between 6.11 and 8.31, the following rmdir would mistakenly succeed.
mkdir -p x/y || framework_failure_
chmod a-w x || framework_failure_
returns_ 1 rmdir --ignore-fail-on-non-empty x/y || fail=1
but root does not see the EPERM; strace output:
...
rmdir("x/y") = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
The attached patch adds guards around the parts of the test which
only work as non-privileged user.
Have a nice day,
Berny
Patch looks good thanks.
An alternative could be to use rmdir itself to test, like:
if ! rmdir x/y 2>/dev/null; then
returns_ 1 rmdir --ignore-fail-on-non-empty x/y || fail=1
fi
cheers,
Pádraig