2 # make sure rmdir's --ignore-fail-on-non-empty option works
4 # Copyright (C) 1999-2024 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>.
19 .
"${srcdir=.}/tests/init.sh"; path_prepend_ .
/src
23 mkdir
-p "$cwd/a/b/c" "$cwd/a/x" || framework_failure_
25 rmdir -p --ignore-fail-on-non-empty "$cwd/a/b/c" || fail
=1
26 # $cwd/a/x should remain
27 test -d "$cwd/a/x" || fail
=1
28 # $cwd/a/b and $cwd/a/b/c should be gone
29 test -d "$cwd/a/b" && fail
=1
30 test -d "$cwd/a/b/c" && fail
=1
32 # Ensure that with --ignore-fail-on-non-empty, we still fail, e.g., for EPERM.
33 # Between 6.11 and 8.31, the following rmdir would mistakenly succeed.
34 mkdir
-p x
/y || framework_failure_
35 chmod a-w x || framework_failure_
37 if ! uid_is_privileged_
; then # root does not get EPERM.
38 returns_
1 rmdir --ignore-fail-on-non-empty x
/y || fail
=1
42 # Between 6.11 and 8.31, the following rmdir would mistakenly fail,
43 # and also give a nondescript error
44 touch x
/y
/z || framework_failure_
45 rmdir --ignore-fail-on-non-empty x
/y || fail
=1
48 if ! uid_is_privileged_
; then # root does not get EPERM.
49 # assume empty dir if unreadable entries (so failure to remove diagnosed)
50 rm x
/y
/z || framework_failure_
51 chmod a-r x
/y || framework_failure_
52 returns_
1 rmdir --ignore-fail-on-non-empty x
/y || fail
=1