2 # Make sure "chown USER:GROUP FILE" works, and similar tests with separators.
4 # Copyright (C) 2004-2023 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
22 id_u
=$
(id
-u) || framework_failure_
23 test -n "$id_u" || framework_failure_
25 id_un
=$
(id
-un) || framework_failure_
26 test -n "$id_un" || framework_failure_
28 id_g
=$
(id
-g) || framework_failure_
29 test -n "$id_g" || framework_failure_
31 id_gn
=$
(id
-gn) || framework_failure_
32 test -n "$id_gn" || framework_failure_
34 # Systems with both local and external groups with conflicting IDs,
35 # were seen to fail this test erroneously with EPERM errors.
36 test $
(getent group |
grep "^$id_gn:" |
wc -l) = 1 ||
37 skip_
"group '$id_gn' not unique: " \
38 "$(getent group | grep "^
$id_gn:" | tr '\n' ',')"
40 # FreeBSD 6.x's getgrnam fails to look up a group name containing
41 # a space. On such a system, skip this test if the group name contains
42 # a byte not in the portable filename character set.
46 *[^a-zA-Z0-9._-
]*) skip_
"invalid group name: $id_gn";;
54 for u
in $id_u "$id_un" ''; do
55 for g
in $id_g "$id_gn" ''; do
62 [0-9]*$sep) returns_
1 chown
"$u$sep$g" .
2>/dev
/null || fail
=1 ;;
63 *) chown
"$u$sep$g" . || fail
=1 ;;