修复 hook 隔离用例把探针自身写入当成被测行为 #523

Merged
suzmii merged 2 commits from fix/git-hooks-index-snapshot into master 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,