mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-23 07:35:35 +02:00
80 lines
1.5 KiB
Bash
Executable File
80 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# make sure chgrp is reasonable
|
|
|
|
if test "$VERBOSE" = yes; then
|
|
set -x
|
|
chgrp --version
|
|
fi
|
|
|
|
pwd=`pwd`
|
|
tmp=basic.$$
|
|
trap 'status=$?; cd $pwd; rm -rf $tmp && exit $status' 0
|
|
trap '(exit $?); exit' 1 2 13 15
|
|
|
|
framework_failure=0
|
|
mkdir $tmp || framework_failure=1
|
|
cd $tmp || framework_failure=1
|
|
|
|
if test $framework_failure = 1; then
|
|
echo 'failure in testing framework' 1>&2
|
|
(exit 1); exit
|
|
fi
|
|
|
|
fail=0
|
|
|
|
groups=`id -nG 2>/dev/null`
|
|
case "$groups" in
|
|
*' '*) ;;
|
|
*) cat <<EOF 1>&2
|
|
$0: this test requires that you be a member of more than one group,
|
|
but running \`id -nG' either failed or found just one.
|
|
EOF
|
|
(exit 77); exit
|
|
;;
|
|
esac
|
|
|
|
set _ $groups; shift
|
|
g1=$1
|
|
g2=$2
|
|
mkdir d
|
|
touch f f2 d/f3
|
|
chgrp $g1 f || fail=1
|
|
chgrp $g2 f || fail=1
|
|
chgrp $g2 f2 || fail=1
|
|
|
|
(
|
|
chgrp -c $g1 f
|
|
chgrp -c $g2 f
|
|
chgrp -c $g2 f
|
|
chgrp --verbose $g1 f
|
|
chgrp --verbose $g1 f
|
|
chgrp --verbose --reference=f2 f
|
|
chgrp -R --verbose $g2 d
|
|
chgrp -R --verbose $g1 d
|
|
chgrp -R -c $g2 d
|
|
chgrp -R -c $g1 d
|
|
chgrp -c $g2 d
|
|
) 2>&1 | sed "s/ $g1$/ G1/;s/ $g2$/ G2/" > actual
|
|
|
|
cat <<\EOF > expected
|
|
group of `f' changed to G1
|
|
group of `f' changed to G2
|
|
group of `f' changed to G1
|
|
group of `f' retained as G1
|
|
group of `f' changed to XXX
|
|
group of `d' changed to G2
|
|
group of `d/f3' changed to G2
|
|
group of `d' changed to G1
|
|
group of `d/f3' changed to G1
|
|
group of `d' changed to G2
|
|
group of `d/f3' changed to G2
|
|
group of `d' changed to G1
|
|
group of `d/f3' changed to G1
|
|
group of `d' changed to G2
|
|
EOF
|
|
|
|
cmp expected actual \
|
|
|| { diff -c expected actual 1>&2; fail=1; }
|
|
|
|
(exit $fail); exit
|