From: Wayne Davison Date: Fri, 24 Jul 2020 18:33:21 +0000 (-0700) Subject: Fix devices-fake test if rsync can't link specials X-Git-Tag: v3.2.3pre1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=842d6edfdcd1e0b2df819cdff321a1854c074112;p=thirdparty%2Frsync.git Fix devices-fake test if rsync can't link specials - Add info about hardlinked specials to --version output. - Use "no hardlink-special" info to ensure that the devices-fake test will not fail. --- diff --git a/options.c b/options.c index d92a7665..aa61d348 100644 --- a/options.c +++ b/options.c @@ -608,6 +608,11 @@ static void print_info_flags(enum logcode f) #endif "hardlinks", +#ifndef CAN_HARDLINK_SPECIAL + "no " +#endif + "hardlink-special", + #ifndef SUPPORT_LINKS "no " #endif diff --git a/testsuite/devices.test b/testsuite/devices.test index 773c543f..56ab2c52 100644 --- a/testsuite/devices.test +++ b/testsuite/devices.test @@ -97,6 +97,8 @@ esac # TODO: Need to test whether hardlinks are possible on this OS/filesystem +$RSYNC --version | grep "[, ] hardlink-special" >/dev/null && CAN_HLINK_SPECIAL=yes || CAN_HLINK_SPECIAL=no + mkdir "$fromdir" mkdir "$todir" mknod "$fromdir/char" c 41 67 || test_skipped "Can't create char device node" @@ -105,7 +107,11 @@ mknod "$fromdir/char3" c 42 69 || test_skipped "Can't create char device node" mknod "$fromdir/block" b 42 69 || test_skipped "Can't create block device node" mknod "$fromdir/block2" b 42 73 || test_skipped "Can't create block device node" mknod "$fromdir/block3" b 105 73 || test_skipped "Can't create block device node" -ln "$fromdir/block3" "$fromdir/block3.5" || echo "Skipping hard-linked device test..." +if test "$CAN_HLINK_SPECIAL" = yes; then + ln "$fromdir/block3" "$fromdir/block3.5" +else + echo "Skipping hard-linked device test..." +fi mkfifo "$fromdir/fifo" || mknod "$fromdir/fifo" p || test_skipped "Can't run mkfifo" # Work around time rounding/truncating issue by touching both files. touch -r "$fromdir/block" "$fromdir/block" "$fromdir/block2" @@ -147,7 +153,7 @@ cD$all_plus char2 cD$all_plus char3 cS$all_plus fifo EOT -if test ! -r "$fromdir/block3.5"; then +if test "$CAN_HLINK_SPECIAL" = no; then grep -v block3.5 <"$chkfile" >"$chkfile.new" mv "$chkfile.new" "$chkfile" fi @@ -159,7 +165,7 @@ echo "" ( cd "$todir" && rsync_ls_lR . ) > "$tmpdir/ls-to" diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to" -if test -r "$fromdir/block3.5"; then +if test "$CAN_HLINK_SPECIAL" = yes; then set -x $RSYNC -aii --link-dest="$todir" "$fromdir/" "$chkdir/" \ | tee "$outfile"