diff --git a/generator.c b/generator.c index 4d4ae72e3..17923d3c7 100644 --- a/generator.c +++ b/generator.c @@ -2384,7 +2384,7 @@ void generate_files(int f_out, const char *local_name) write_ndx(f_out, NDX_DONE); if (protocol_version >= 31 && EARLY_DELETE_DONE_MSG()) { - if ((INFO_GTE(STATS, 2) && (delete_mode || force_delete)) || read_batch) + if (delete_mode || force_delete || read_batch) write_del_stats(f_out); if (EARLY_DELAY_DONE_MSG()) /* Can't send this before delay */ write_ndx(f_out, NDX_DONE); @@ -2429,7 +2429,7 @@ void generate_files(int f_out, const char *local_name) if (protocol_version >= 31) { if (!EARLY_DELETE_DONE_MSG()) { - if (INFO_GTE(STATS, 2) || read_batch) + if (delete_mode || force_delete || read_batch) write_del_stats(f_out); write_ndx(f_out, NDX_DONE); } diff --git a/testsuite/daemon-delete-stats_test.py b/testsuite/daemon-delete-stats_test.py new file mode 100644 index 000000000..91d43accb --- /dev/null +++ b/testsuite/daemon-delete-stats_test.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +"""Daemon upload delete stats report deleted files.""" + +import subprocess + +from rsyncfns import ( + FROMDIR, TODIR, + build_rsyncd_conf, makepath, rmtree, rsync_argv, start_test_daemon, + test_fail, +) + + +DAEMON_PORT = 12899 + +src = FROMDIR +dst = TODIR + +rmtree(src) +rmtree(dst) +makepath(src, dst) + +(src / 'keep.txt').write_text("keep\n") +(dst / 'keep.txt').write_text("keep\n") +(dst / 'delete.txt').write_text("delete\n") + +url = start_test_daemon(build_rsyncd_conf(), DAEMON_PORT) + +proc = subprocess.run( + rsync_argv('-a', '--delete', '-i', '--stats', f'{src}/', f'{url}test-to/'), + capture_output=True, + text=True, +) +out = proc.stdout + proc.stderr +print(out) + +if proc.returncode != 0: + test_fail(f"daemon upload delete run exited {proc.returncode}") + +if '*deleting delete.txt' not in out: + test_fail(f"daemon upload did not itemize the deleted file:\n{out}") + +if 'Number of deleted files: 1 (reg: 1)' not in out: + test_fail(f"daemon upload did not report the deleted file in stats:\n{out}")