From 0f6222d05f5c87bda21d420d3ab4dc41b89b925f Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 21 Oct 2024 15:28:41 +0200 Subject: [PATCH] fix: pass down PNP loader args when debugging Fixes #508 --- src/debug/api.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/debug/api.ts b/src/debug/api.ts index 41474a1..a0c8275 100644 --- a/src/debug/api.ts +++ b/src/debug/api.ts @@ -1,4 +1,5 @@ import { createServer } from 'node:http' +import { pathToFileURL } from 'node:url' import * as vscode from 'vscode' import { WebSocketServer } from 'ws' import getPort from 'get-port' @@ -29,9 +30,7 @@ export async function debugTests( const config = getConfig(pkg.folder) const deferredPromise = Promise.withResolvers() - const { runtimeArgs, runtimeExecutable } = await getRuntimeOptions( - pkg.folder, - ) + const { runtimeArgs, runtimeExecutable } = await getRuntimeOptions(pkg) const env = config.env || {} const logLevel = config.logLevel @@ -141,17 +140,28 @@ export async function debugTests( await deferredPromise.promise } -async function getRuntimeOptions(folder: vscode.WorkspaceFolder) { - const config = getConfig(folder) +async function getRuntimeOptions(pkg: VitestPackage) { + const config = getConfig(pkg.folder) // if (config.shellType === 'child_process') { const node = await findNode( - vscode.workspace.workspaceFile?.fsPath || folder.uri.fsPath, + vscode.workspace.workspaceFile?.fsPath || pkg.folder.uri.fsPath, ) - const execArgs = config.nodeExecArgs + const runtimeArgs = config.nodeExecArgs || [] + const pnpLoader = pkg.loader + const pnp = pkg.pnp + const execArgv = pnpLoader && pnp // && !gte(execVersion, '18.19.0') + ? [ + '--require', + pnp, + '--experimental-loader', + pathToFileURL(pnpLoader).toString(), + ...runtimeArgs, + ] + : runtimeArgs return { runtimeExecutable: node, - runtimeArgs: execArgs, + runtimeArgs: execArgv, } // } -- 2.51.2