diff --git a/src/goMain.ts b/src/goMain.ts index 327b6f095a..30480a24e7 100644 --- a/src/goMain.ts +++ b/src/goMain.ts @@ -159,7 +159,8 @@ export async function activate(ctx: vscode.ExtensionContext): Promise (args: any) => { - const goConfig = getGoConfig(); - if (!vscode.workspace.workspaceFolders?.length) { - vscode.window.showInformationMessage('No workspace is open to run tests.'); - return; - } - let workspaceUri: vscode.Uri | undefined = vscode.workspace.workspaceFolders[0].uri; - if ( - vscode.window.activeTextEditor && - vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri) - ) { - workspaceUri = vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri)!.uri; - } +export function testWorkspace(ignoreTarget: boolean): CommandFactory { + return () => (args: any) => { + const goConfig = getGoConfig(); + if (!vscode.workspace.workspaceFolders?.length) { + vscode.window.showInformationMessage('No workspace is open to run tests.'); + return; + } + let workspaceUri: vscode.Uri | undefined = vscode.workspace.workspaceFolders[0].uri; + if ( + vscode.window.activeTextEditor && + vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri) + ) { + workspaceUri = vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri)!.uri; + } - const testConfig: TestConfig = { - goConfig, - dir: workspaceUri.fsPath, - flags: getTestFlags(goConfig, args), - includeSubDirectories: true - }; - // Remember this config as the last executed test. - lastTestConfig = testConfig; + const testConfig: TestConfig = { + goConfig, + dir: workspaceUri.fsPath, + flags: getTestFlags(goConfig, args), + includeSubDirectories: true, + ignoreTarget + }; + // Remember this config as the last executed test. + lastTestConfig = testConfig; - isModSupported(workspaceUri, true).then((isMod) => { - testConfig.isMod = isMod; - goTest(testConfig).then(null, (err) => { - console.error(err); + isModSupported(workspaceUri, true).then((isMod) => { + testConfig.isMod = isMod; + goTest(testConfig).then(null, (err) => { + console.error(err); + }); }); - }); -}; + }; +} /** * Runs all tests in the source of the active editor. diff --git a/src/testUtils.ts b/src/testUtils.ts index 8fb65edd3b..1aab6139d8 100644 --- a/src/testUtils.ts +++ b/src/testUtils.ts @@ -91,6 +91,8 @@ export interface TestConfig { isMod?: boolean; //goxls: Whether this is _test.gop isGop?: boolean; + // goxls: provider a no target go test + ignoreTarget?: boolean; /** * Whether code coverage should be generated and applied. */ @@ -308,9 +310,11 @@ export async function goTest(testconfig: TestConfig): Promise { // compute test target package const { targets, pkgMap, currentGoWorkspace } = await getTestTargetPackages(testconfig, outputChannel); - // generate full test args. - const { args, outArgs, tmpCoverPath, addJSONFlag } = computeTestCommand(testconfig, targets); + const { args, outArgs, tmpCoverPath, addJSONFlag } = computeTestCommand( + testconfig, + testconfig.ignoreTarget ? [] : targets + ); outputChannel.appendLine(['Running tool:', goRuntimePath, ...outArgs].join(' ')); outputChannel.appendLine('');