diff --git a/test/main/services/team/TeamMcpConfigBuilder.test.ts b/test/main/services/team/TeamMcpConfigBuilder.test.ts index 8d25869c..9f837af1 100644 --- a/test/main/services/team/TeamMcpConfigBuilder.test.ts +++ b/test/main/services/team/TeamMcpConfigBuilder.test.ts @@ -88,6 +88,24 @@ describe('TeamMcpConfigBuilder', () => { expect(server?.command).toMatch(/(^node$|[\\/]node(?:\.exe)?$)/); } + function mockPathExists(existingPaths: string[]): void { + const originalAccess = fs.promises.access.bind(fs.promises); + vi.spyOn(fs.promises, 'access').mockImplementation(async (targetPath, mode) => { + const normalizedPath = + typeof targetPath === 'string' ? targetPath : Buffer.isBuffer(targetPath) ? targetPath.toString() : `${targetPath}`; + if (existingPaths.includes(normalizedPath)) { + return; + } + await originalAccess(targetPath, mode); + }); + } + + function mockBuiltWorkspaceEntryAvailable(): string { + const builtEntry = path.join(process.cwd(), 'mcp-server', 'dist', 'index.js'); + mockPathExists([builtEntry]); + return builtEntry; + } + beforeEach(() => { originalResourcesPath = (process as NodeJS.Process & { resourcesPath?: string }).resourcesPath; tempAppData = fs.mkdtempSync(path.join(os.tmpdir(), 'team-mcp-appdata-')); @@ -160,6 +178,7 @@ describe('TeamMcpConfigBuilder', () => { }); it('prefers the built workspace MCP entry when available', async () => { + const builtEntry = mockBuiltWorkspaceEntryAvailable(); const builder = new TeamMcpConfigBuilder(); const configPath = await builder.writeConfigFile(); @@ -171,7 +190,7 @@ describe('TeamMcpConfigBuilder', () => { }; const server = parsed.mcpServers?.['agent-teams']; - expectNodeEntry(server, path.join(process.cwd(), 'mcp-server', 'dist', 'index.js')); + expectNodeEntry(server, builtEntry); }); it('keeps generated team MCP config minimal and does not inline top-level user MCP', async () => { @@ -254,6 +273,7 @@ describe('TeamMcpConfigBuilder', () => { }); it('generated agent-teams server ignores same-named user MCP entry', async () => { + const builtEntry = mockBuiltWorkspaceEntryAvailable(); const homeDir = fs.mkdtempSync(path.join(os.tmpdir(), 'team-mcp-home-')); createdDirs.push(homeDir); mockHomeDir = homeDir; @@ -279,7 +299,7 @@ describe('TeamMcpConfigBuilder', () => { mcpServers: Record; }; - expectNodeEntry(parsed.mcpServers['agent-teams'], path.join(process.cwd(), 'mcp-server', 'dist', 'index.js')); + expectNodeEntry(parsed.mcpServers['agent-teams'], builtEntry); }); it('ignores malformed user MCP file', async () => { @@ -485,6 +505,7 @@ describe('TeamMcpConfigBuilder', () => { }); it('packaged mode falls back to the built workspace MCP entry when resourcesPath bundle is missing', async () => { + const builtEntry = mockBuiltWorkspaceEntryAvailable(); setPackagedMode(true, '6.0.0'); const resourcesDir = fs.mkdtempSync(path.join(os.tmpdir(), 'team-mcp-resources-')); createdDirs.push(resourcesDir); @@ -494,6 +515,6 @@ describe('TeamMcpConfigBuilder', () => { const configPath = await builder.writeConfigFile(); createdPaths.push(configPath); - expectNodeEntry(readGeneratedServer(configPath), path.join(process.cwd(), 'mcp-server', 'dist', 'index.js')); + expectNodeEntry(readGeneratedServer(configPath), builtEntry); }); });