diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index c71a4ba..bc5df58 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -15,10 +15,7 @@ export async function initVitest( emitter: WorkerWSEventEmitter, ) { const meta = data.meta - const reporter = new VSCodeReporter({ - setupFilePaths: meta.setupFilePaths, - debug: data.debug, - }) + const reporter = new VSCodeReporter(meta, data.debug) let stdout: Writable | undefined let stderr: Writable | undefined @@ -67,14 +64,6 @@ export async function initVitest( reporter: undefined, ui: false, includeTaskLocation: true, - execArgv: meta.pnpApi && meta.pnpLoader - ? [ - '--require', - meta.pnpApi, - '--experimental-loader', - meta.pnpLoader, - ] - : [], inspect: typeof data.debug === 'object' ? `${data.debug.host}:${data.debug.port}` : undefined, diff --git a/packages/worker/src/reporter.ts b/packages/worker/src/reporter.ts index d4993a9..0768772 100644 --- a/packages/worker/src/reporter.ts +++ b/packages/worker/src/reporter.ts @@ -3,6 +3,7 @@ import type { VitestWorkerRPC, WorkerInitMetadata, WorkerRunnerOptions } from 'v import type { BrowserCommand, Reporter, + ResolvedConfig, RunnerTestFile, TestModule, TestProject, @@ -13,23 +14,27 @@ import type { import { parseErrorStacktrace } from '@vitest/utils/source-map' import { ExtensionWorker } from './worker' -interface VSCodeReporterOptions { - setupFilePaths: WorkerInitMetadata['setupFilePaths'] - debug: WorkerRunnerOptions['debug'] -} - export class VSCodeReporter implements Reporter { public rpc!: VitestWorkerRPC private vitest!: VitestCore private setupFilePaths: WorkerInitMetadata['setupFilePaths'] private debug: WorkerRunnerOptions['debug'] + private execArgv: string[] = [] private debuggerAttached: boolean | undefined = undefined - constructor(options: VSCodeReporterOptions) { - this.setupFilePaths = options.setupFilePaths - this.debug = options.debug + constructor(meta: WorkerInitMetadata, debug: WorkerRunnerOptions['debug']) { + this.setupFilePaths = meta.setupFilePaths + this.debug = debug + if (meta.pnpApi && meta.pnpLoader) { + this.execArgv.push( + '--require', + meta.pnpApi, + '--experimental-loader', + meta.pnpLoader, + ) + } } onInit(vitest: VitestCore) { @@ -38,6 +43,7 @@ export class VSCodeReporter implements Reporter { vitest.projects.forEach((project) => { this.ensureSetupFileIsAllowed(project.vite.config) + this.ensurePnpSuported(project.config) }) } @@ -161,6 +167,10 @@ export class VSCodeReporter implements Reporter { }) } + ensurePnpSuported(config: ResolvedConfig) { + config.execArgv.push(...this.execArgv) + } + configureBrowserDebugging(vitest: VitestCore) { ExtensionWorker.emitter.on('onBrowserDebug', (fullfilled) => { this.debuggerAttached = fullfilled diff --git a/samples/basic-v4/vitest.config.ts b/samples/basic-v4/vitest.config.ts index eeae7f5..df287a4 100644 --- a/samples/basic-v4/vitest.config.ts +++ b/samples/basic-v4/vitest.config.ts @@ -1,4 +1,4 @@ -/// +/// // Configure Vitest (https://vitest.dev/config) diff --git a/samples/basic/vitest.config.ts b/samples/basic/vitest.config.ts index eeae7f5..df287a4 100644 --- a/samples/basic/vitest.config.ts +++ b/samples/basic/vitest.config.ts @@ -1,4 +1,4 @@ -/// +/// // Configure Vitest (https://vitest.dev/config)