A daemon needs to set dry_run with --only-write-batch.
[rsync.git] / testsuite / duplicates.test
blob3b4ebab0aea7a424d00e5beff9372bfd3d27a9ab
1 #! /bin/sh
3 # Copyright (C) 2002 by Martin Pool <mbp@samba.org>
5 # This program is distributable under the terms of the GNU GPL (see
6 # COPYING).
8 # Test rsync handling of duplicate filenames.
10 # It's quite possible that the user might specify the same source file
11 # more than once on the command line, perhaps through shell variables
12 # or wildcard expansions. It might cause problems for rsync if the
13 # same name occurred more than once in the file list, because we might
14 # be trying to update the first copy and generate checksums for the
15 # second copy at the same time. See clean_flist() for the implementation.
17 # We don't need to worry about hardlinks or symlinks. Because we
18 # always rename-and-replace the new copy, they can't affect us.
20 # This test is not great, because it is a timing-dependent bug.
22 . "$suitedir/rsync.fns"
24 # Build some hardlinks
26 mkdir "$fromdir"
27 name1="$fromdir/name1"
28 name2="$fromdir/name2"
29 echo "This is the file" > "$name1"
30 ln -s "$name1" "$name2" || fail "can't create symlink"
32 outfile="$scratchdir/rsync.out"
34 checkit "$RSYNC -avv '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$todir/'" "$fromdir" "$todir" \
35 | tee "$outfile"
37 # Make sure each file was only copied once...
38 if [ `grep -c '^name1$' "$outfile"` != 1 ]
39 then
40 test_fail "name1 was not copied exactly once"
42 if [ `grep -c '^name2 -> ' "$outfile"` != 1 ]
43 then
44 test_fail "name2 was not copied exactly once"
47 # The script would have aborted on error, so getting here means we've won.
48 exit 0