fix(dev-infra): skip hook setup in CI

This commit is contained in:
Tianyi Cui
2026-07-27 21:54:04 +08:00
parent 4e7132e77b
commit 1f8a3dd7b1
8 changed files with 36 additions and 10 deletions
+21
View File
@@ -118,6 +118,7 @@ function createFixture(names: { main?: string; linked?: string } = {}): Fixture
const linked = join(container, names.linked ?? 'linked')
const env: NodeJS.ProcessEnv = {
...process.env,
CI: 'false',
GIT_AUTHOR_EMAIL: 'hooks@example.test',
GIT_AUTHOR_NAME: 'Hooks Test',
GIT_COMMITTER_EMAIL: 'hooks@example.test',
@@ -187,6 +188,26 @@ function runInstaller(
}
describe('worktree-local Lefthook installer', () => {
it('skips hook installation when CI is true', async () => {
const fixture = createFixture()
const common = commonDirectory(fixture)
const missingInclude = join(fixture.container, 'missing-ci-credentials.gitconfig')
git(fixture, fixture.main, [
'config',
'--local',
'includeIf.gitdir:/github/workspace/.git.path',
missingInclude,
])
const result = await runInstaller(fixture, fixture.main, { CI: 'true' })
expect(result.status, result.stderr).toBe(0)
expect(gitResult(fixture, fixture.main, ['config', '--get', 'extensions.worktreeConfig']).status).toBe(1)
expect(git(fixture, fixture.main, ['config', '--get', 'core.repositoryFormatVersion'])).toBe('0')
expect(existsSync(hooksPath(fixture, fixture.main))).toBe(false)
expect(existsSync(join(common, 'config.worktree'))).toBe(false)
})
it('isolates main and linked worktrees without changing legacy common hooks', async () => {
const fixture = createFixture()
const common = commonDirectory(fixture)