Tizen 2.0 Release
[external/tizen-coreutils.git] / tests / chgrp / recurse
1 #!/bin/sh
2 # ad-hoc tests of chgrp with -R and -H or -L and symlinks
3
4 # Copyright (C) 2000, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5
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 2 of the License, or
9 # (at your option) any later version.
10
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.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 # 02110-1301, USA.
20
21 if test "$VERBOSE" = yes; then
22   set -x
23   chgrp --version
24 fi
25
26 . $srcdir/../group-names
27
28 pwd=`pwd`
29 tmp=recurse.$$
30 trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
31 trap '(exit $?); exit' 1 2 13 15
32
33 framework_failure=0
34 mkdir $tmp || framework_failure=1
35 cd $tmp || framework_failure=1
36
37 if test $framework_failure = 1; then
38   echo 'failure in testing framework' 1>&2
39   (exit 1); exit 1
40 fi
41
42 set _ $groups; shift
43 g1=$1
44 g2=$2
45
46 fail=0
47
48 # chgrp -R should not traverse a symlink to a directory.
49 mkdir d e
50 touch d/dd e/ee
51 ln -s ../e d/s
52 chgrp -R $g1 e/ee || fail=1
53 # This should not should change the group of e/ee
54 chgrp -R $g2 d
55 set _ `ls -ln e/ee`; g=$5; test "$g" = $g1 || fail=1
56 # This must change the group of e/ee, since -L makes
57 # chgrp traverse the symlink from d/s into e.
58 chgrp -L -R $g2 d
59 set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
60
61 # This must *not* change the group of e/ee
62 chgrp -H -R $g1 d
63 set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
64
65 ln -s d link
66
67 # This shouldn't change the group of e/ee either.
68 chgrp -H -R $g1 link || fail=1
69 set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
70 # But it *should* change d/dd.
71 set _ `ls -ln d/dd`; g=$5; test "$g" = $g1 || fail=1
72
73 (exit $fail); exit $fail