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;