diff --git a/actions/setup/js/action_conclusion_otlp.test.cjs b/actions/setup/js/action_conclusion_otlp.test.cjs index efe7daeb4f0..ff7334e0cd5 100644 --- a/actions/setup/js/action_conclusion_otlp.test.cjs +++ b/actions/setup/js/action_conclusion_otlp.test.cjs @@ -15,8 +15,12 @@ const { run } = req("./action_conclusion_otlp.cjs"); // Shared mock function — patched onto the module exports in beforeEach const mockSendJobConclusionSpan = vi.fn(); +/** Env vars read by this module — cleared before each test */ +const MANAGED_ENV_VARS = ["OTEL_EXPORTER_OTLP_ENDPOINT", "INPUT_JOB_NAME", "INPUT_JOB-NAME", "GITHUB_AW_OTEL_JOB_START_MS"]; + describe("action_conclusion_otlp.cjs", () => { - let originalEnv; + /** @type {Record} */ + let originalEnv = {}; beforeEach(() => { vi.clearAllMocks(); @@ -24,43 +28,21 @@ describe("action_conclusion_otlp.cjs", () => { mockSendJobConclusionSpan.mockResolvedValue(undefined); // Patch the shared CJS exports object — run() accesses this at call time sendOtlpModule.sendJobConclusionSpan = mockSendJobConclusionSpan; - - originalEnv = { - OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT, - INPUT_JOB_NAME: process.env.INPUT_JOB_NAME, - "INPUT_JOB-NAME": process.env["INPUT_JOB-NAME"], - GITHUB_AW_OTEL_JOB_START_MS: process.env.GITHUB_AW_OTEL_JOB_START_MS, - }; - delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT; - delete process.env.INPUT_JOB_NAME; - delete process.env["INPUT_JOB-NAME"]; - delete process.env.GITHUB_AW_OTEL_JOB_START_MS; + originalEnv = Object.fromEntries(MANAGED_ENV_VARS.map(key => [key, process.env[key]])); + MANAGED_ENV_VARS.forEach(key => delete process.env[key]); }); afterEach(() => { vi.restoreAllMocks(); sendOtlpModule.sendJobConclusionSpan = originalSendJobConclusionSpan; - - if (originalEnv.OTEL_EXPORTER_OTLP_ENDPOINT !== undefined) { - process.env.OTEL_EXPORTER_OTLP_ENDPOINT = originalEnv.OTEL_EXPORTER_OTLP_ENDPOINT; - } else { - delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT; - } - if (originalEnv.INPUT_JOB_NAME !== undefined) { - process.env.INPUT_JOB_NAME = originalEnv.INPUT_JOB_NAME; - } else { - delete process.env.INPUT_JOB_NAME; - } - if (originalEnv["INPUT_JOB-NAME"] !== undefined) { - process.env["INPUT_JOB-NAME"] = originalEnv["INPUT_JOB-NAME"]; - } else { - delete process.env["INPUT_JOB-NAME"]; - } - if (originalEnv.GITHUB_AW_OTEL_JOB_START_MS !== undefined) { - process.env.GITHUB_AW_OTEL_JOB_START_MS = originalEnv.GITHUB_AW_OTEL_JOB_START_MS; - } else { - delete process.env.GITHUB_AW_OTEL_JOB_START_MS; - } + MANAGED_ENV_VARS.forEach(key => { + const value = originalEnv[key]; + if (value === undefined) { + delete process.env[key]; + } else { + process.env[key] = value; + } + }); }); it("should export run as a function", () => { @@ -177,6 +159,14 @@ describe("action_conclusion_otlp.cjs", () => { expect(mockSendJobConclusionSpan).toHaveBeenCalledWith("gh-aw.job.conclusion", { startMs: undefined }); }); + + it("should pass startMs: undefined when GITHUB_AW_OTEL_JOB_START_MS is a negative number", async () => { + process.env.GITHUB_AW_OTEL_JOB_START_MS = "-1000"; + + await run(); + + expect(mockSendJobConclusionSpan).toHaveBeenCalledWith("gh-aw.job.conclusion", { startMs: undefined }); + }); }); }); diff --git a/actions/setup/js/safe_outputs_handlers.test.cjs b/actions/setup/js/safe_outputs_handlers.test.cjs index fa128edcec3..a45b7ef1f29 100644 --- a/actions/setup/js/safe_outputs_handlers.test.cjs +++ b/actions/setup/js/safe_outputs_handlers.test.cjs @@ -522,6 +522,7 @@ describe("safe_outputs_handlers", () => { }); process.env.GITHUB_BASE_REF = "master"; + process.env.GITHUB_HEAD_REF = "feature/test-change"; process.env.GITHUB_REF_NAME = "feature/test-change"; try { const result = await handlers.createPullRequestHandler({ @@ -543,6 +544,7 @@ describe("safe_outputs_handlers", () => { ); } finally { delete process.env.GITHUB_BASE_REF; + delete process.env.GITHUB_HEAD_REF; delete process.env.GITHUB_REF_NAME; } });