From 7105b4cc637c02d9ed790ec682795c9f6ae3465c Mon Sep 17 00:00:00 2001 From: dayebishouji <1441423987@qq.com> Date: Sat, 26 Sep 2026 11:45:10 +0800 Subject: [PATCH] test: keep Baseline fault injection effective on Windows --- .aoci/baseline.json | 10 +++++----- .../cli/index_entries_apply_atomic_test.go | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.aoci/baseline.json b/.aoci/baseline.json index cacb1a93..441734e0 100644 --- a/.aoci/baseline.json +++ b/.aoci/baseline.json @@ -1,7 +1,7 @@ { "version": 1, "created_at": "2026-08-07T17:44:36Z", - "updated_at": "2026-09-25T10:48:53Z", + "updated_at": "2026-09-26T03:39:41Z", "files": { ".gitattributes": { "role": "index", @@ -1557,10 +1557,10 @@ }, "internal/cli/index_entries_apply_atomic_test.go": { "role": "observe", - "sha256": "374b9e938ae55b0a0159a843379ea390e61e113ac575141f8e6341bceac0d367", - "size": 16393, - "normalized_sha256": "374b9e938ae55b0a0159a843379ea390e61e113ac575141f8e6341bceac0d367", - "format_sha256": "374b9e938ae55b0a0159a843379ea390e61e113ac575141f8e6341bceac0d367", + "sha256": "e39bf6a626f094bd937ad7f903af0acd0a82aea3b94d49da8548396013da7729", + "size": 16584, + "normalized_sha256": "e39bf6a626f094bd937ad7f903af0acd0a82aea3b94d49da8548396013da7729", + "format_sha256": "e39bf6a626f094bd937ad7f903af0acd0a82aea3b94d49da8548396013da7729", "format_kind": "gofmt" }, "internal/cli/index_entries_audit_test.go": { diff --git a/internal/cli/index_entries_apply_atomic_test.go b/internal/cli/index_entries_apply_atomic_test.go index 50d0e7bf..5a3f0b4f 100644 --- a/internal/cli/index_entries_apply_atomic_test.go +++ b/internal/cli/index_entries_apply_atomic_test.go @@ -36,9 +36,9 @@ const ( manualAtomicNewB = "b.go[XUT5T]: F:原子新职责乙 | R:a.go | A:- | S:-" ) -// blockBaselineBackupReplacement以非空目录占据备份目标。 -// POSIX rename不能覆盖目录,Windows回退删除也不能移除非空目录, -// 因而两端都会在真实AtomicWrite备份阶段稳定失败。 +// blockBaselineBackupReplacement occupies the backup target with a nonempty +// directory. Keep it open so Windows cannot rename it aside during AtomicWrite's +// fallback; POSIX already rejects replacing the directory with a file. func blockBaselineBackupReplacement(t *testing.T, root string) func() { t.Helper() backupPath := filepath.Join(root, ".aoci", "baseline.json.bak") @@ -49,12 +49,20 @@ func blockBaselineBackupReplacement(t *testing.T, root string) func() { if err := os.WriteFile(blockerPath, []byte("block\n"), 0o644); err != nil { t.Fatal(err) } + backup, err := os.Open(backupPath) + if err != nil { + t.Fatal(err) + } blocked := true - return func() { + unblock := func() { + t.Helper() if !blocked { return } blocked = false + if err := backup.Close(); err != nil { + t.Fatal(err) + } if err := os.Remove(blockerPath); err != nil { t.Fatal(err) } @@ -62,6 +70,8 @@ func blockBaselineBackupReplacement(t *testing.T, root string) func() { t.Fatal(err) } } + t.Cleanup(unblock) + return unblock } // buildManualAtomicEntriesRepo构造不启用Host-Agent Plan防线的Endpoint草稿仓。