Commit | Line | Data |
---|---|---|
766526c7 MP |
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 rsync handling of duplicate filenames. | |
9 | ||
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. | |
16 | ||
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. | |
19 | ||
20 | # This test is not great, because it is a timing-dependent bug. | |
21 | ||
22 | . $srcdir/testsuite/rsync.fns | |
23 | ||
24 | set -x | |
25 | ||
26 | # Build some hardlinks | |
27 | ||
28 | fromdir="$scratchdir/from" | |
29 | todir="$scratchdir/to" | |
30 | ||
766526c7 MP |
31 | mkdir "$fromdir" |
32 | name1="$fromdir/name1" | |
1623ba68 | 33 | name2="$fromdir/name2" |
766526c7 MP |
34 | echo "This is the file" > "$name1" |
35 | ln -s "$name1" "$name2" || fail "can't create symlink" | |
36 | ||
1623ba68 MP |
37 | outfile="$scratchdir/rsync.out" |
38 | ||
06464f55 | 39 | checkit "$RSYNC -avv \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$fromdir/\" \"$todir/\"" "$fromdir" "$todir" \ |
1623ba68 MP |
40 | | tee "$outfile" |
41 | ||
42 | # Make sure each file was only copied once... | |
43 | if [ `grep -c '^name1$' "$outfile"` != 1 ] | |
44 | then | |
0406a3a7 | 45 | test_fail "name1 was not copied exactly once" |
1623ba68 | 46 | fi |
bc3b5b25 | 47 | if [ `grep -c '^name2 -> ' "$outfile"` != 1 ] |
1623ba68 | 48 | then |
0406a3a7 | 49 | test_fail "name2 was not copied exactly once" |
1623ba68 | 50 | fi |
766526c7 | 51 | |
05118158 | 52 | # The script would have aborted on error, so getting here means we've won. |
766526c7 | 53 | exit 0 |