fix(chv-muse-r12fix3-3): 回落审计 repo 记解析后的仓目录(P6 小项 A)

R12 复测 2 轻微缺口:回落审计行的 repo 字段为空串——fallback_warn
记的是调用方传的原始参数,而驱动与日常调用都是无参调用
(cd 仓 && chv-sync status)。单仓无损,多仓时审计分不清是哪
一仓回落。

修法:cmd_pull/cmd_push/cmd_status 三处都先调 resolve_repo 解析
仓目录,再以解析后的目录调 fallback_warn。解析失败即 die、不
留回落审计——同步本身已失败,没有“回落”可记(此前是先记审计
再解析,解析失败也留一行空 repo 审计)。

测试:ChvSyncDelegationTest——无参回落的 repo 即唯一仓目录
(不再是空串),显式给仓目录时 repo 即该目录。P6 模块 65 项全过。
This commit is contained in:
host committed 2026-11-08 09:48:41 +00:00
1 parent 7cba3c2b21
commit 7784be0657
3 files changed
+30 -6

No files matched your search

+18
View File
@@ -681,10 +681,28 @@ class ChvSyncDelegationTest(unittest.TestCase):
record = json.loads(lines[0])
self.assertEqual(record["event"], "chv_sync_worker_fallback")
self.assertEqual(record["action"], "status")
# round-12 修复轮第三轮(小项 A):repo 记 resolve_repo
# 解析后的仓目录——无参调用时是唯一仓的目录,不再是空串。
self.assertEqual(record["repo"],
os.path.join(self.ws, "repo"))
self.assertIs(record["delegated_to_worker"], False)
self.assertIs(record["privsep_active"], False)
self.assertIn("ts", record)
def test_fallback_audit_repo_is_explicit_arg(self):
# 显式给仓目录时 repo 即该目录(与无参解析同款语义)。
self.env["CHV_GITEA_WORKER_SOCK"] = os.path.join(
self.tmp.name, "no-worker.sock")
proc = self._run_sync(
"status", os.path.join(self.ws, "repo"))
self.assertIn("worker 不在", proc.stderr)
with open(self.audit) as fh:
lines = [line for line in fh if line.strip()]
self.assertEqual(len(lines), 1)
record = json.loads(lines[0])
self.assertEqual(record["repo"],
os.path.join(self.ws, "repo"))
def test_fallback_audit_accumulates_one_line_per_call(self):
self.env["CHV_GITEA_WORKER_SOCK"] = os.path.join(
self.tmp.name, "no-worker.sock")