diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 16:14:31 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 16:14:31 +0000 |
commit | 2d5707c7479eacb3b1ad98e01b53f56a88f8fb78 (patch) | |
tree | d9c334e83692851c02e3e1b8e65570c97bc82481 /testsuite/duplicates.test | |
parent | Initial commit. (diff) | |
download | rsync-2d5707c7479eacb3b1ad98e01b53f56a88f8fb78.tar.xz rsync-2d5707c7479eacb3b1ad98e01b53f56a88f8fb78.zip |
Adding upstream version 3.2.7.upstream/3.2.7
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testsuite/duplicates.test')
-rw-r--r-- | testsuite/duplicates.test | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/testsuite/duplicates.test b/testsuite/duplicates.test new file mode 100644 index 0000000..3317e72 --- /dev/null +++ b/testsuite/duplicates.test @@ -0,0 +1,44 @@ +#!/bin/sh + +# Copyright (C) 2002 by Martin Pool <mbp@samba.org> + +# This program is distributable under the terms of the GNU GPL (see +# COPYING). + +# Test rsync handling of duplicate filenames. + +# It's quite possible that the user might specify the same source file +# more than once on the command line, perhaps through shell variables +# or wildcard expansions. It might cause problems for rsync if the +# same name occurred more than once in the file list, because we might +# be trying to update the first copy and generate checksums for the +# second copy at the same time. See clean_flist() for the implementation. + +# We don't need to worry about hardlinks or symlinks. Because we +# always rename-and-replace the new copy, they can't affect us. + +# This test is not great, because it is a timing-dependent bug. + +. "$suitedir/rsync.fns" + +# Build some hardlinks + +mkdir "$fromdir" +name1="$fromdir/name1" +name2="$fromdir/name2" +echo "This is the file" > "$name1" +ln -s "$name1" "$name2" || test_fail "can't create symlink" + +checkit "$RSYNC -avv '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$fromdir/' '$todir/'" "$fromdir" "$todir" \ + | tee "$outfile" + +# Make sure each file was only copied once... +if [ `grep -c '^name1$' "$outfile"` != 1 ]; then + test_fail "name1 was not copied exactly once" +fi +if [ `grep -c '^name2 -> ' "$outfile"` != 1 ]; then + test_fail "name2 was not copied exactly once" +fi + +# The script would have aborted on error, so getting here means we've won. +exit 0 |