Added a test to make sure that merging relative items continues to
[rsync/rsync.git] / testsuite / relative.test
CommitLineData
5d24ee71
WD
1#!/bin/sh
2
3# Copyright (C) 2005 by Wayne Davison <wayned@samba.org>
4#
5# This program is distributable under the terms of the GNU GPL (see COPYING)
6
7. "$suitedir/rsync.fns"
8
9deepstr='down/3/deep'
10deepdir="$fromdir/$deepstr"
89b76bac
WD
11extradir="$fromdir/extra"
12makepath "$deepdir" "$extradir/$deepstr" "$chkdir"
13
5d24ee71
WD
14fromdir="$deepdir"
15hands_setup
16fromdir="$tmpdir/from"
17
89b76bac
WD
18extrafile="$extradir/./$deepstr/extra.added.value"
19echo wowza >"$extrafile"
20
5d24ee71
WD
21outfile="$scratchdir/rsync.out"
22
23cd "$fromdir"
24
25# Main script starts here
26
89b76bac
WD
27$RSYNC -ai --include=/down/ --exclude='/*' "$fromdir/" "$chkdir/"
28
56078033 29sleep 1
89b76bac 30runtest "basic relative" 'checkit "$RSYNC -avR ./$deepstr \"$todir\"" "$chkdir" "$todir"'
5d24ee71 31
89b76bac
WD
32ln $deepstr/filelist $deepstr/dir
33ln ../chk/$deepstr/filelist ../chk/$deepstr/dir
34runtest "hard links" 'checkit "$RSYNC -avHR ./$deepstr/ \"$todir\"" "$chkdir" "$todir"'
5d24ee71
WD
35
36cp "$deepdir/text" "$todir/$deepstr/ThisShouldGo"
37cp "$deepdir/text" "$todir/$deepstr/dir/ThisShouldGoToo"
89b76bac 38runtest "deletion" 'checkit "$RSYNC -avHR --del ./$deepstr/ \"$todir\"" "$chkdir" "$todir"'
5d24ee71 39
89b76bac 40runtest "non-deletion" 'checkit "$RSYNC -aiHR --del ./$deepstr/ \"$todir\"" "$chkdir" "$todir"' \
5d24ee71
WD
41 | tee "$outfile"
42
43# Make sure no files were deleted
44grep 'deleting ' "$outfile" && test_fail "Erroneous deletions occurred!"
45
89b76bac
WD
46# Relative with merging.
47$RSYNC -ai "$extradir/down" "$chkdir/"
48
49checkit "$RSYNC -aiR $deepstr '$extrafile' '$todir'" "$chkdir" "$todir"
50
51checkit "$RSYNC -aiR --del $deepstr '$extrafile' '$todir'" "$chkdir" "$todir" \
52 | tee "$outfile"
53
54# Make sure no files were deleted
55grep 'deleting ' "$outfile" && test_fail "Erroneous deletions occurred! (2)"
56
5d24ee71
WD
57# The script would have aborted on error, so getting here means we've won.
58exit 0