diff --git a/src/environment.ts b/src/environment.ts index 9912f0382..03d4870be 100644 --- a/src/environment.ts +++ b/src/environment.ts @@ -172,4 +172,6 @@ export interface Env { getOptional(name: string): string | undefined; /** Gets the entries of the underlying `ProcessEnv`. */ entries(): Array<[string, string | undefined]>; + /** Sets an environment variable. */ + set(name: string, value: string): void; } diff --git a/src/testing-utils.ts b/src/testing-utils.ts index 748ce40ea..c6ff0dbda 100644 --- a/src/testing-utils.ts +++ b/src/testing-utils.ts @@ -331,11 +331,19 @@ export type ActionVarOverrides = Partial< * excluding some that are expected to be set to paths. See `setupActionsVars`. * * @param overrides Overrides for the defaults. + * @param env The environment to set the variables for. */ -export function setupBaseActionsVars(overrides?: ActionVarOverrides) { +export function setupBaseActionsVars( + overrides?: ActionVarOverrides, + env?: Env, +) { const vars = { ...DEFAULT_ACTIONS_VARS, ...overrides }; for (const [key, value] of Object.entries(vars)) { - process.env[key] = value; + if (env) { + env.set(key, value); + } else { + process.env[key] = value; + } } } diff --git a/src/util.ts b/src/util.ts index 1e79382f6..36f0ce04b 100644 --- a/src/util.ts +++ b/src/util.ts @@ -572,6 +572,9 @@ export function getEnv(env: NodeJS.ProcessEnv = process.env): Env { getRequired: (name) => getRequiredEnvVar(env, name), getOptional: (name) => getOptionalEnvVarFrom(env, name), entries: () => Object.entries(env), + set: (name, value) => { + env[name] = value; + }, }; }