docs(parity): correct delete-delay budget, fuzzy, and test-review gaps
- --delete-delay: state that the reported count advances on actual removal while --max-delete is charged at plan/snapshot time (defer_add/planned). A new differential shows rsync instead charges on actual removals and recursively removes a queued directory, so the row moves to Caveat (matrix 111/13/33) and the residual is pinned by tests. - Add a deterministic unit test (plan-time budget charge), a FastSync integration test (byte-barrier refill + --max-delete), and an rsync differential for a refilled deferred directory. - Soften the --fuzzy summary: the tree is byte-exact by design, so it is pinned by the threshold suite, not a byte-level differential. - README: describe what -m parity actually selects; fix the allowlist example to the real max_delete entry. - xdist-safe delete-timing fixture names (timing and --threads mode). - Renumber the duplicate HANDOFF item 9 to 10; add the missing final newline to test_checksum.c. - Expose ignore_errors_allows_delete and unit-test the deletion gate without a privileged source directory; update the stale deleted-count doc comment. No production behavior changes.
This commit is contained in:
@@ -4456,6 +4456,26 @@ static void test_parse_args_rejects_unsupported_short() {
|
||||
}
|
||||
}
|
||||
|
||||
/* The --ignore-errors deletion gate, unit-tested without a privileged source
|
||||
* directory: a clean scan always deletes; an I/O error suppresses deletion
|
||||
* unless --ignore-errors is set. (The end-to-end mode-000 differential lives in
|
||||
* the setpriv integration test; this pins the decision itself in the PR gate.) */
|
||||
static void test_ignore_errors_allows_delete(void) {
|
||||
Config* cfg = config_create();
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
EXPECT_TRUE(ignore_errors_allows_delete(cfg, false));
|
||||
EXPECT_FALSE(ignore_errors_allows_delete(cfg, true));
|
||||
|
||||
cfg->ignore_errors = true;
|
||||
EXPECT_TRUE(ignore_errors_allows_delete(cfg, false));
|
||||
EXPECT_TRUE(ignore_errors_allows_delete(cfg, true));
|
||||
|
||||
/* A NULL config cannot opt into --ignore-errors. */
|
||||
EXPECT_TRUE(ignore_errors_allows_delete(NULL, false));
|
||||
EXPECT_FALSE(ignore_errors_allows_delete(NULL, true));
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
void test_client_cli() {
|
||||
test_validate_config_required_paths();
|
||||
test_parse_args_numeric_ids();
|
||||
@@ -4650,4 +4670,5 @@ void test_client_cli() {
|
||||
test_parse_args_noop_does_not_consume_argv();
|
||||
test_parse_args_backup_copy_links_shorts();
|
||||
test_parse_args_rejects_unsupported_short();
|
||||
test_ignore_errors_allows_delete();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user