doc: remove older ChangeLog items
[coreutils.git] / tests / rmdir / ignore.sh
blob2896557c755828a09dc3f0268c985dc412d7b39f
1 #!/bin/sh
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
20 print_ver_ rmdir
22 cwd=$(pwd)
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
41 test -d 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
46 test -d 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
53 test -d x/y || fail=1
56 Exit $fail