]> git.ipfire.org Git - thirdparty/rsync.git/commitdiff
Add test and fix regression for --delay-updates (#192) (#204)
authorNatanael Copa <ncopa@alpinelinux.org>
Wed, 28 Jul 2021 16:10:55 +0000 (18:10 +0200)
committerGitHub <noreply@github.com>
Wed, 28 Jul 2021 16:10:55 +0000 (09:10 -0700)
Fixes regression introduced with commit 3a7bf54ad520 (A resumed
partial-dir file is transferred in-place.)

receiver.c
testsuite/delay-updates.test [new file with mode: 0644]

index e85c4779c1452eb88406f4abde49013347d101a4..b5020d0744b141f9ac3e367bd35ca684e9dbba7e 100644 (file)
@@ -881,7 +881,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                                        do_unlink(partialptr);
                                handle_partial_dir(partialptr, PDIR_DELETE);
                        }
-               } else if (keep_partial && partialptr && !one_inplace) {
+               } else if (keep_partial && partialptr && (!one_inplace || delay_updates)) {
                        if (!handle_partial_dir(partialptr, PDIR_CREATE)) {
                                rprintf(FERROR,
                                        "Unable to create partial-dir for %s -- discarding %s.\n",
diff --git a/testsuite/delay-updates.test b/testsuite/delay-updates.test
new file mode 100644 (file)
index 0000000..5896a9c
--- /dev/null
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+# Test rsync --delay-updates
+
+. "$suitedir/rsync.fns"
+
+mkdir "$fromdir"
+
+echo 1 > "$fromdir/foo"
+
+checkit "$RSYNC -aiv --delay-updates \"$fromdir/\" \"$todir/\"" "$fromdir" "$todir"
+
+mkdir "$todir/.~tmp~"
+echo 2 > "$todir/.~tmp~/foo"
+touch -r .. "$todir/.~tmp~/foo" "$todir/foo"
+echo 3 > "$fromdir/foo"
+
+checkit "$RSYNC -aiv --delay-updates \"$fromdir/\" \"$todir/\"" "$fromdir" "$todir"
+
+# The script would have aborted on error, so getting here means we've won.
+exit 0