From 18872c531e3c22e278ec5ba3865c0dcd54aa5452 Mon Sep 17 00:00:00 2001 From: Theo Ephraim Date: Wed, 28 Oct 2026 21:47:08 -0700 Subject: [PATCH] test: isolate PR env in requireBumpFile ci check tests Tests read the host CI's GITHUB_HEAD_REF; on the version PR branch ci check skips, so the expected failures returned 0. --- .../test/core/check-require-bump-file.test.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/bumpy/test/core/check-require-bump-file.test.ts b/packages/bumpy/test/core/check-require-bump-file.test.ts index 7defce0..3c581eb 100644 --- a/packages/bumpy/test/core/check-require-bump-file.test.ts +++ b/packages/bumpy/test/core/check-require-bump-file.test.ts @@ -137,6 +137,28 @@ describe('requireBumpFile', () => { }); describe('bumpy ci check', () => { + // Pin the PR env so the host CI's own PR (e.g. the version PR branch, which + // `ci check` skips) doesn't leak into these tests + const ENV_KEYS = [ + 'GITHUB_HEAD_REF', + 'GITHUB_BASE_REF', + 'BUMPY_PR_NUMBER', + 'GITHUB_EVENT_NAME', + 'GITHUB_EVENT_PATH', + ]; + let savedEnv: Record; + beforeEach(() => { + savedEnv = Object.fromEntries(ENV_KEYS.map((k) => [k, process.env[k]])); + for (const k of ENV_KEYS) delete process.env[k]; + process.env.GITHUB_HEAD_REF = 'feature'; + }); + afterEach(() => { + for (const [k, v] of Object.entries(savedEnv)) { + if (v === undefined) delete process.env[k]; + else process.env[k] = v; + } + }); + test('fails when a required package is uncovered, even with another bump file', async () => { await commitBumpFiles({ 'app-change': "---\n'app': patch\n---\n\nFix app\n" }); expect(await run(() => ciCheckCommand(tmpDir, { comment: false }))).toBe(1);