From ad3567666919ea4249d02a26c230ea8e0daef410 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 24 Oct 2025 14:58:07 +0100 Subject: [PATCH] Add `getOptionalEnvVar` function Also add tests for it and `getRequiredEnvParam` --- src/util.test.ts | 29 +++++++++++++++++++++++++++++ src/util.ts | 11 +++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/util.test.ts b/src/util.test.ts index 88da23525..13ae6e0bb 100644 --- a/src/util.test.ts +++ b/src/util.test.ts @@ -252,6 +252,35 @@ test("allowed API versions", async (t) => { ); }); +test("getRequiredEnvParam - gets environment variables", (t) => { + process.env.SOME_UNIT_TEST_VAR = "foo"; + const result = util.getRequiredEnvParam("SOME_UNIT_TEST_VAR"); + t.is(result, "foo"); +}); + +test("getRequiredEnvParam - throws if an environment variable isn't set", (t) => { + t.throws(() => util.getRequiredEnvParam("SOME_UNIT_TEST_VAR")); +}); + +test("getOptionalEnvVar - gets environment variables", (t) => { + process.env.SOME_UNIT_TEST_VAR = "foo"; + const result = util.getOptionalEnvVar("SOME_UNIT_TEST_VAR"); + t.is(result, "foo"); +}); + +test("getOptionalEnvVar - gets undefined for empty environment variables", (t) => { + process.env.SOME_UNIT_TEST_VAR = ""; + const result = util.getOptionalEnvVar("SOME_UNIT_TEST_VAR"); + t.is(result, undefined); +}); + +test("getOptionalEnvVar - doesn't throw for undefined environment variables", (t) => { + t.notThrows(() => { + const result = util.getOptionalEnvVar("SOME_UNIT_TEST_VAR"); + t.is(result, undefined); + }); +}); + test("doesDirectoryExist", async (t) => { // Returns false if no file/dir of this name exists t.false(util.doesDirectoryExist("non-existent-file.txt")); diff --git a/src/util.ts b/src/util.ts index 617c164f5..6aa8e7d9a 100644 --- a/src/util.ts +++ b/src/util.ts @@ -673,6 +673,17 @@ export function getRequiredEnvParam(paramName: string): string { return value; } +/** + * Get an environment variable, but return `undefined` if it is not set or empty. + */ +export function getOptionalEnvVar(paramName: string): string | undefined { + const value = process.env[paramName]; + if (value?.trim().length === 0) { + return undefined; + } + return value; +} + export class HTTPError extends Error { public status: number;