Merge pull request '修复 hook 隔离用例把探针自身写入当成被测行为' (#523) from fix/git-hooks-index-snapshot into master
Project CI / AI game creator shell Rust smoke (push) Successful in 1m25s
Project CI / Backend tests (push) Successful in 4m13s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m44s
Project CI / Frontend tests (push) Successful in 2m5s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m13s
Project CI / Native shell tests (push) Successful in 6m19s
Project CI / AI game creator shell web tests (push) Successful in 1m59s
Project CI / Repository checks (push) Successful in 2m35s
Project CI / AI game creator shell Rust crates (push) Successful in 55s

Reviewed-on: #523
This commit was merged in pull request #523.
This commit is contained in:
2026-09-28 12:03:55 +08:00
+3 -1
View File
@@ -277,11 +277,13 @@ test('hook fixtures do not mutate the calling linked worktree or its index', ()
writeFileSync(join(worktree, 'sentinel.txt'), 'unstaged\n');
const gitDir = git(worktree, 'rev-parse', '--absolute-git-dir').trim();
const indexPath = join(gitDir, 'index');
// `git status` 会刷新并重写索引里的 stat 缓存(macOS 与部分 git 版本上字节必然变化),
// 所以先跑完会写索引的探针再取快照,否则断言的是探针自身的副作用而不是被测行为。
const before = {
refs: git(outerRepo, 'show-ref'),
config: readFileSync(join(outerRepo, '.git', 'config'), 'utf8'),
index: readFileSync(indexPath),
status: git(worktree, 'status', '--porcelain'),
index: readFileSync(indexPath),
};
const result = spawnSync(
process.execPath,