-checkit "sed '/!/d' \"$excl\" |
- $RSYNC -avv -f :_.excl -f ._- --delete-excluded \
- --delete-before \"$fromdir/\" \"$todir/\"" "$chkdir" "$todir"
+# Next, we'll test some rule-restricted filter files.
+
+cat >"$fromdir/bar/down/.excl" <<EOF
+file3
+EOF
+cat >"$fromdir/bar/down/to/foo/.excl" <<EOF
++ file3
+*.bak
+EOF
+$RSYNC -av --del "$fromdir/" "$chkdir/"
+rm "$chkdir/bar/down/to/foo/file1.bak"
+rm "$chkdir/bar/down/to/foo/file3"
+rm "$chkdir/bar/down/to/foo/+ file3"
+$RSYNC -av --existing --filter='-! */' "$fromdir/" "$chkdir/"
+$RSYNC -av --delete-excluded --exclude='*' "$fromdir/" "$todir/"
+
+checkit "$RSYNC -avv -f dir-merge,-_.excl \
+ '$fromdir/' '$todir/'" "$chkdir" "$todir"
+
+relative_opts='--relative --chmod=Du+w --copy-unsafe-links'
+$RSYNC -av $relative_opts "$fromdir/foo" "$chkdir/"
+rm -rf "$chkdir$fromdir/foo/down"
+$RSYNC -av $relative_opts --existing --filter='-! */' "$fromdir/foo" "$chkdir/"
+
+checkit "$RSYNC -avv $relative_opts --exclude='$fromdir/foo/down' \
+ '$fromdir/foo' '$todir'" "$chkdir$fromdir/foo" "$todir$fromdir/foo"