Another xattr "internal abbrev" fix for an xattr object that is
[rsync/rsync.git] / testsuite / chmod-option.test
1 #! /bin/sh
2
3 # Copyright (C) 2002 by Martin Pool <mbp@samba.org>
4
5 # This program is distributable under the terms of the GNU GPL (see
6 # COPYING).
7
8 # Test that the --chmod option functions correctly.
9
10 . $srcdir/testsuite/rsync.fns
11
12 # Build some files
13
14 fromdir="$scratchdir/from"
15 todir="$scratchdir/to"
16 checkdir="$scratchdir/check"
17
18 mkdir "$fromdir"
19 name1="$fromdir/name1"
20 name2="$fromdir/name2"
21 dir1="$fromdir/dir1"
22 dir2="$fromdir/dir2"
23 echo "This is the file" > "$name1"
24 echo "This is the other file" > "$name2"
25 mkdir "$dir1" "$dir2"
26
27 chmod 4700 "$name1" || test_skipped "Can't chmod"
28 chmod 700 "$dir1"
29 chmod 770 "$dir2"
30
31 # Copy the files we've created over to another directory
32 checkit "$RSYNC -avv '$fromdir/' '$checkdir/'" "$fromdir" "$checkdir"
33
34 # And then manually make the changes which should occur 
35 umask 002
36 chmod ug-s,a+rX "$checkdir"/*
37 chmod +w "$checkdir" "$checkdir"/dir*
38
39 checkit "$RSYNC -avv --chmod ug-s,a+rX,D+w '$fromdir/' '$todir/'" "$checkdir" "$todir"
40
41 rm -r "$fromdir" "$checkdir" "$todir"
42 makepath "$todir" "$fromdir/foo"
43 touch "$fromdir/bar"
44
45 checkit "$RSYNC -avv '$fromdir/' '$checkdir/'" "$fromdir" "$checkdir"
46 chmod o+x "$fromdir"/bar
47
48 checkit "$RSYNC -avv --chmod=Fo-x '$fromdir/' '$todir/'" "$checkdir" "$todir"
49
50 # Tickle a bug in rsync 2.6.8: if you push a new directory with --perms off to
51 # a daemon with an incoming chmod, the daemon pretends the directory is a file
52 # for the purposes of the second application of the incoming chmod.
53
54 build_rsyncd_conf
55 cat >>"$scratchdir/test-rsyncd.conf" <<EOF
56 [test-incoming-chmod]
57         path = $todir
58         read only = no
59         incoming chmod = Fo-x
60 EOF
61
62 RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon"
63 export RSYNC_CONNECT_PROG
64
65 rm -r "$todir"
66 makepath "$todir"
67
68 checkit "$RSYNC -avv --no-perms '$fromdir/' localhost::test-incoming-chmod/" "$checkdir" "$todir"
69
70 # The script would have aborted on error, so getting here means we've won.
71 exit 0