[release] prepare v0.28.0 release (4) - windows fix

171cc61 src/goToolPprof: execFile instead of exec
0ae12d0 src/goTest/resolve: fix Windows path handling
bff0d0a CHANGELOG.md: mention test explorer on Windows is a work-in-progress

Change-Id: Ie8fcd0c4cf2e55424b0b3e18ad3fddc9d8bca64c
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7f87792..f7f53a6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@
 
 This version requires VS Code 1.59 or newer.
 
-๐ŸŽ‰๐Ÿงช The extension implements [the Testing API of VS Code](https://code.visualstudio.com/api/extension-guides/testing). You can navigate and run/profile tests using the test explorer UI! Further work for better profiling and debugging support through the test explorer is underway. Please give it a try and provide feedback.
+๐ŸŽ‰๐Ÿงช The extension implements [the Testing API of VS Code](https://code.visualstudio.com/api/extension-guides/testing). You can navigate and run/profile tests using the test explorer UI! Windows support and further work for better profiling and debugging support through the test explorer is underway. Please give it a try and provide feedback.
 
 A list of all issues and changes can be found in the [v0.28.0 milestone](https://github.com/golang/vscode-go/milestone/34) and [commit history](https://github.com/golang/vscode-go/compare/v0.27.2...v0.28.0).
 
diff --git a/src/goTest/resolve.ts b/src/goTest/resolve.ts
index b5e342a..ead2a47 100644
--- a/src/goTest/resolve.ts
+++ b/src/goTest/resolve.ts
@@ -304,11 +304,11 @@
 		let item: TestItem;
 
 		const nested = getGoConfig(uri).get('testExplorer.packageDisplayMode') === 'nested';
-		const modDir = await getModFolderPath(uri, true);
+		const modDir = Uri.file(await getModFolderPath(uri, true)); // TODO support non-file schemes
 		const wsfolder = workspace.getWorkspaceFolder(uri);
 		if (modDir) {
 			// If the package is in a module, add it as a child of the module
-			let parent = await this.getModule(uri.with({ path: modDir, query: '', fragment: '' }));
+			let parent = await this.getModule(modDir);
 			if (uri.path === parent.uri.path) {
 				return parent;
 			}
diff --git a/src/goToolPprof.ts b/src/goToolPprof.ts
index ef1bc91..d947006 100644
--- a/src/goToolPprof.ts
+++ b/src/goToolPprof.ts
@@ -2,7 +2,7 @@
  * Copyright 2021 The Go Authors. All rights reserved.
  * Licensed under the MIT License. See LICENSE in the project root for license information.
  *--------------------------------------------------------*/
-import { exec } from 'child_process';
+import { execFile } from 'child_process';
 import { window, CancellationToken, TextDocumentContentProvider, Uri } from 'vscode';
 import { outputChannel } from './goStatus';
 import { getBinPath } from './util';
@@ -15,7 +15,7 @@
 	private pprof(uri: Uri, token: CancellationToken) {
 		const goBin = getBinPath('go');
 		return new Promise<string | undefined>((resolve) => {
-			const cp = exec(`${goBin} tool pprof -tree ${uri.fsPath}`, async (err, stdout, stderr) => {
+			const cp = execFile(goBin, ['tool', 'pprof', '-tree', uri.fsPath], async (err, stdout, stderr) => {
 				if (err || stderr) {
 					const m = 'Failed to execute `go tool pprof`';
 					if (err) outputChannel.appendLine(`${m}: ${err}`);