| import { afterEach, describe, expect, it, vi } from 'vitest'; | |
| const originalEnv = { | |
| HEROKU_SLUG_COMMIT: process.env.HEROKU_SLUG_COMMIT, | |
| VERCEL_GIT_COMMIT_SHA: process.env.VERCEL_GIT_COMMIT_SHA, | |
| }; | |
| afterEach(() => { | |
| vi.resetModules(); | |
| vi.clearAllMocks(); | |
| vi.unmock('node:child_process'); | |
| if (originalEnv.HEROKU_SLUG_COMMIT === undefined) { | |
| delete process.env.HEROKU_SLUG_COMMIT; | |
| } else { | |
| process.env.HEROKU_SLUG_COMMIT = originalEnv.HEROKU_SLUG_COMMIT; | |
| } | |
| if (originalEnv.VERCEL_GIT_COMMIT_SHA === undefined) { | |
| delete process.env.VERCEL_GIT_COMMIT_SHA; | |
| } else { | |
| process.env.VERCEL_GIT_COMMIT_SHA = originalEnv.VERCEL_GIT_COMMIT_SHA; | |
| } | |
| }); | |
| describe('git-hash', () => { | |
| it('falls back to unknown when git commands fail', async () => { | |
| delete process.env.HEROKU_SLUG_COMMIT; | |
| delete process.env.VERCEL_GIT_COMMIT_SHA; | |
| vi.doMock('node:child_process', () => ({ | |
| execSync: () => { | |
| throw new Error('git failure'); | |
| }, | |
| })); | |
| const { gitHash } = await import('@/utils/git-hash'); | |
| expect(gitHash).toBe('unknown'); | |
| }); | |
| }); | |