Skip to content

Commit d941807

Browse files
elboulangerotridge
authored andcommitted
Fix flaky hardlinks test
The test was added in dc34990, it turns out that it's flaky. It failed once on the Debian build infra, cf. [1]. The problem is that the command `rsync -aH '$fromdir/sym' '$todir'` updates the mod time of `$todir`, so there might be a diff between the output of `rsync_ls_lR $fromdir` and `rsync_ls_lR $todir`, if ever rsync runs 1 second (or more) after the directories were created. To clarify: it's easy to make the test fails 100% of the times with this change: ``` makepath "$fromdir/sym" "$todir" +sleep 5 checkit "$RSYNC -aH '$fromdir/sym' '$todir'" "$fromdir" "$todir" ``` With the fix proposed here, we don't use `checkit` anymore, instead we just run the rsync command, then a simple `diff` to compare the two directories. This is exactly what the other `-H` test just above does. In case there's some doubts, `diff` fails if `sym` is missing: ``` $ mkdir -p foo/sym bar $ diff foo bar || echo KO! Only in foo: sym KO! ``` I tested that, after this commit, the test still catches the `-H` regression in rsync 3.4.0. Fixes: #735 [1]: https://buildd.debian.org/status/fetch.php?pkg=rsync&arch=ppc64el&ver=3.4.1%2Bds1-1&stamp=1741147156&raw=0
1 parent 992e10e commit d941807

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

testsuite/hardlinks.test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ diff $diffopt "$name1" "$todir" || test_fail "solo copy of name1 failed"
8181
# enabled (this has broken in 3.4.0 so far, so we need this test).
8282
rm -rf "$fromdir" "$todir"
8383
makepath "$fromdir/sym" "$todir"
84-
checkit "$RSYNC -aH '$fromdir/sym' '$todir'" "$fromdir" "$todir"
84+
$RSYNC -aH "$fromdir/sym" "$todir"
85+
diff $diffopt "$fromdir" "$todir" || test_fail "solo copy of sym failed"
8586

8687
# The script would have aborted on error, so getting here means we've won.
8788
exit 0

0 commit comments

Comments
 (0)