MCPcopy
hub / github.com/callstack/agent-device / installIsolatedCliTestEnv

Function installIsolatedCliTestEnv

src/__tests__/cli-test-env.ts:5–46  ·  view source on GitHub ↗
(
  explicitEnv: Record<string, string | undefined> = {},
)

Source from the content-addressed store, hash-verified

3import path from 'node:path';
4
5export function installIsolatedCliTestEnv(
6 explicitEnv: Record<string, string | undefined> = {},
7): () => void {
8 const previousEnv = new Map<string, string | undefined>();
9 const explicitKeys = new Set(Object.keys(explicitEnv));
10 const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'agent-device-cli-env-'));
11 const tempHome = path.join(tempRoot, 'home');
12 fs.mkdirSync(path.join(tempHome, '.agent-device'), { recursive: true });
13
14 for (const key of Object.keys(process.env)) {
15 if (!key.startsWith('AGENT_DEVICE_') || explicitKeys.has(key)) continue;
16 previousEnv.set(key, process.env[key]);
17 delete process.env[key];
18 }
19
20 if (!explicitKeys.has('HOME')) {
21 previousEnv.set('HOME', process.env.HOME);
22 process.env.HOME = tempHome;
23 }
24
25 for (const [key, value] of Object.entries(explicitEnv)) {
26 if (!previousEnv.has(key)) {
27 previousEnv.set(key, process.env[key]);
28 }
29 if (value === undefined) {
30 delete process.env[key];
31 } else {
32 process.env[key] = value;
33 }
34 }
35
36 return () => {
37 for (const [key, value] of previousEnv.entries()) {
38 if (value === undefined) {
39 delete process.env[key];
40 } else {
41 process.env[key] = value;
42 }
43 }
44 fs.rmSync(tempRoot, { recursive: true, force: true });
45 };
46}

Calls 2

startsWithMethod · 0.80
setMethod · 0.80

Tested by

no test coverage detected