From 16de1b478c9634c926aeca618dc786ed777a7e6f Mon Sep 17 00:00:00 2001 From: Jeff Dickey <216188+jdxcode@users.noreply.github.com> Date: Sun, 28 Jan 2018 06:23:42 -0800 Subject: [PATCH] fix: close over envs --- src/env.ts | 46 ++++++++++++++++++++++++---------------------- src/types.ts | 2 -- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/env.ts b/src/env.ts index 8f15c9c..e77e37f 100644 --- a/src/env.ts +++ b/src/env.ts @@ -1,27 +1,29 @@ import * as _ from 'lodash' -import {Env, EnvOptions} from './types' +import {EnvOptions} from './types' -export default (env: {[k: string]: string | null | undefined}, opts: EnvOptions = {}) => ({ - run(ctx) { - // normalize to undefined - const normalizedEnv = _.mapValues(env, v => v === null ? undefined : v) +export default (env: {[k: string]: string | null | undefined}, opts: EnvOptions = {}) => { + const envs: (typeof process.env)[] = [] + return { + run() { + // normalize to undefined + const normalizedEnv = _.mapValues(env, v => v === null ? undefined : v) - // store previous env for finally - ctx.envs = ctx.envs || [] - ctx.envs.push(process.env) + // store previous env for finally + envs.push(process.env) - if (opts.clear) { - process.env = {...normalizedEnv} - } else { - process.env = {...process.env, ...normalizedEnv} - Object.entries(normalizedEnv) - .filter(([, v]) => v === undefined) - .forEach(([k]) => { delete process.env[k] }) - } - }, - finally(ctx) { - const env = ctx.envs.pop() - if (env) process.env = env - }, -}) as Env + if (opts.clear) { + process.env = {...normalizedEnv} + } else { + process.env = {...process.env, ...normalizedEnv} + Object.entries(normalizedEnv) + .filter(([, v]) => v === undefined) + .forEach(([k]) => { delete process.env[k] }) + } + }, + finally() { + const env = envs.pop() + if (env) process.env = env + }, + } +} diff --git a/src/types.ts b/src/types.ts index 092f909..56c6dfc 100644 --- a/src/types.ts +++ b/src/types.ts @@ -47,6 +47,4 @@ export interface EnvOptions { clear?: boolean } -export interface Env extends Plugin<{envs: (typeof process.env)[]}> {} - export type MochaDone = (error?: any) => any