11// altimate_change start — tests for MCP env-var interpolation (closes #656)
22import { describe , test , expect , beforeEach , afterEach } from "bun:test"
3- import { mkdtemp , rm , mkdir , writeFile } from "fs/promises"
4- import { tmpdir } from "os"
3+ import { mkdir , writeFile } from "fs/promises"
54import path from "path"
65import { resolveEnvVars } from "../../src/mcp"
6+ import { tmpdir } from "../fixture/fixture"
77
88// -------------------------------------------------------------------------
99// resolveEnvVars — safety-net resolver at MCP launch site
@@ -110,24 +110,23 @@ describe("resolveEnvVars", () => {
110110// -------------------------------------------------------------------------
111111
112112describe ( "discoverExternalMcp with env-var interpolation" , ( ) => {
113- let tempDir : string
114113 const ORIGINAL_ENV = { ...process . env }
115114
116- beforeEach ( async ( ) => {
117- tempDir = await mkdtemp ( path . join ( tmpdir ( ) , "mcp-envvar-" ) )
115+ beforeEach ( ( ) => {
118116 process . env [ "TEST_MCP_TOKEN" ] = "glpat-secret-token"
119117 process . env [ "TEST_MCP_HOST" ] = "https://gitlab.internal.com"
120118 } )
121119
122- afterEach ( async ( ) => {
120+ afterEach ( ( ) => {
123121 process . env = { ...ORIGINAL_ENV }
124- await rm ( tempDir , { recursive : true , force : true } )
125122 } )
126123
127124 test ( "resolves ${VAR} in discovered .vscode/mcp.json environment" , async ( ) => {
128- await mkdir ( path . join ( tempDir , ".vscode" ) , { recursive : true } )
125+ await using tmp = await tmpdir ( )
126+ const dir = tmp . path
127+ await mkdir ( path . join ( dir , ".vscode" ) , { recursive : true } )
129128 await writeFile (
130- path . join ( tempDir , ".vscode/mcp.json" ) ,
129+ path . join ( dir , ".vscode/mcp.json" ) ,
131130 JSON . stringify ( {
132131 servers : {
133132 gitlab : {
@@ -144,7 +143,7 @@ describe("discoverExternalMcp with env-var interpolation", () => {
144143 )
145144
146145 const { discoverExternalMcp } = await import ( "../../src/mcp/discover" )
147- const { servers } = await discoverExternalMcp ( tempDir )
146+ const { servers } = await discoverExternalMcp ( dir )
148147
149148 expect ( servers [ "gitlab" ] ) . toBeDefined ( )
150149 expect ( servers [ "gitlab" ] . type ) . toBe ( "local" )
@@ -155,9 +154,11 @@ describe("discoverExternalMcp with env-var interpolation", () => {
155154 } )
156155
157156 test ( "resolves {env:VAR} in discovered .cursor/mcp.json environment" , async ( ) => {
158- await mkdir ( path . join ( tempDir , ".cursor" ) , { recursive : true } )
157+ await using tmp = await tmpdir ( )
158+ const dir = tmp . path
159+ await mkdir ( path . join ( dir , ".cursor" ) , { recursive : true } )
159160 await writeFile (
160- path . join ( tempDir , ".cursor/mcp.json" ) ,
161+ path . join ( dir , ".cursor/mcp.json" ) ,
161162 JSON . stringify ( {
162163 mcpServers : {
163164 "my-tool" : {
@@ -172,17 +173,19 @@ describe("discoverExternalMcp with env-var interpolation", () => {
172173 )
173174
174175 const { discoverExternalMcp } = await import ( "../../src/mcp/discover" )
175- const { servers } = await discoverExternalMcp ( tempDir )
176+ const { servers } = await discoverExternalMcp ( dir )
176177
177178 expect ( servers [ "my-tool" ] ) . toBeDefined ( )
178179 const env = ( servers [ "my-tool" ] as any ) . environment
179180 expect ( env . API_KEY ) . toBe ( "glpat-secret-token" )
180181 } )
181182
182183 test ( "resolves ${VAR:-default} with fallback in discovered config" , async ( ) => {
183- await mkdir ( path . join ( tempDir , ".vscode" ) , { recursive : true } )
184+ await using tmp = await tmpdir ( )
185+ const dir = tmp . path
186+ await mkdir ( path . join ( dir , ".vscode" ) , { recursive : true } )
184187 await writeFile (
185- path . join ( tempDir , ".vscode/mcp.json" ) ,
188+ path . join ( dir , ".vscode/mcp.json" ) ,
186189 JSON . stringify ( {
187190 servers : {
188191 svc : {
@@ -197,7 +200,7 @@ describe("discoverExternalMcp with env-var interpolation", () => {
197200 )
198201
199202 const { discoverExternalMcp } = await import ( "../../src/mcp/discover" )
200- const { servers } = await discoverExternalMcp ( tempDir )
203+ const { servers } = await discoverExternalMcp ( dir )
201204
202205 const env = ( servers [ "svc" ] as any ) . environment
203206 expect ( env . MODE ) . toBe ( "production" )
0 commit comments