11import { existsSync } from 'node:fs' ;
2- import { resolve } from 'node:path' ;
2+ import { mkdtemp , rm } from 'node:fs/promises' ;
3+ import { join , resolve } from 'node:path' ;
4+ import { tmpdir } from 'node:os' ;
35import { pathToFileURL } from 'node:url' ;
46import type { ChildProcess } from 'node:child_process' ;
57import { Client } from '@modelcontextprotocol/sdk/client/index.js' ;
@@ -35,6 +37,7 @@ import {
3537} from '../utils/debugger/index.ts' ;
3638import { getPackageRoot } from '../core/manifest/load-manifest.ts' ;
3739import { shutdownXcodeToolsBridge } from '../integrations/xcode-tools-bridge/index.ts' ;
40+ import { setXcodebuildLogDirOverrideForTests } from '../utils/xcodebuild-log-capture.ts' ;
3841
3942export interface CapturedCommand {
4043 command : string [ ] ;
@@ -100,6 +103,9 @@ export async function createMcpTestHarness(opts?: McpTestHarnessOptions): Promis
100103 sessionStore . clear ( ) ;
101104
102105 const mockFs = createMockFileSystemExecutor ( ) ;
106+ const logDir = await mkdtemp ( join ( tmpdir ( ) , 'xcodebuildmcp-smoke-logs-' ) ) ;
107+
108+ setXcodebuildLogDirOverrideForTests ( logDir ) ;
103109
104110 // Set executor overrides on the vitest-resolved source modules
105111 __setTestCommandExecutorOverride ( capturingExecutor ) ;
@@ -125,6 +131,13 @@ export async function createMcpTestHarness(opts?: McpTestHarnessOptions): Promis
125131 builtCommandModule . __setTestCommandExecutorOverride ( capturingExecutor ) ;
126132 builtCommandModule . __setTestFileSystemExecutorOverride ( mockFs ) ;
127133
134+ const builtLogCaptureModule = ( await import (
135+ pathToFileURL ( resolve ( buildRoot , 'utils/xcodebuild-log-capture.js' ) ) . href
136+ ) ) as {
137+ setXcodebuildLogDirOverrideForTests : typeof setXcodebuildLogDirOverrideForTests ;
138+ } ;
139+ builtLogCaptureModule . setXcodebuildLogDirOverrideForTests ( logDir ) ;
140+
128141 // Set interactive spawner override (built module)
129142 const builtInteractiveModule = ( await import (
130143 pathToFileURL ( resolve ( buildRoot , 'utils/execution/interactive-process.js' ) ) . href
@@ -238,6 +251,9 @@ export async function createMcpTestHarness(opts?: McpTestHarnessOptions): Promis
238251 builtInteractiveModule . __clearTestInteractiveSpawnerOverride ( ) ;
239252 __clearTestDebuggerToolContextOverride ( ) ;
240253 builtDebuggerModule . __clearTestDebuggerToolContextOverride ( ) ;
254+ setXcodebuildLogDirOverrideForTests ( null ) ;
255+ builtLogCaptureModule . setXcodebuildLogDirOverrideForTests ( null ) ;
256+ await rm ( logDir , { recursive : true , force : true } ) ;
241257 __resetConfigStoreForTests ( ) ;
242258 builtConfigStoreModule . __resetConfigStoreForTests ( ) ;
243259 __resetServerStateForTests ( ) ;
0 commit comments