Skip to content

Commit 58ad058

Browse files
authored
Include environment when resolving plugin task (#1727)
* Include environment when resolving plugin task Issue: #1725 * Add changelog entry
1 parent 7124b9a commit 58ad058

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
### Fixed
1212

1313
- `Run multiple times...` and `Run until failure...` will now work when multiple tests are selected ([#1724](https://github.com/swiftlang/vscode-swift/pull/1724))
14+
- Provide the Swift environment variables when resolving a `swift-plugin` task ([#1727](https://github.com/swiftlang/vscode-swift/pull/1727))
1415

1516
## 2.8.0 - 2025-07-14
1617

src/tasks/SwiftPluginTaskProvider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ export class SwiftPluginTaskProvider implements vscode.TaskProvider {
102102
"swift-plugin",
103103
new SwiftExecution(swift, swiftArgs, {
104104
cwd,
105+
env: { ...configuration.swiftEnvironmentVariables, ...swiftRuntimeEnv() },
105106
presentation: task.presentationOptions,
106107
}),
107108
task.problemMatchers

test/unit-tests/tasks/SwiftPluginTaskProvider.test.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ import { SwiftToolchain } from "../../../src/toolchain/toolchain";
2323
import { SwiftExecution } from "../../../src/tasks/SwiftExecution";
2424
import { Version } from "../../../src/utilities/version";
2525
import { BuildFlags } from "../../../src/toolchain/BuildFlags";
26-
import { instance, MockedObject, mockFn, mockObject } from "../../MockUtils";
26+
import { instance, MockedObject, mockFn, mockGlobalValue, mockObject } from "../../MockUtils";
2727
import { FolderContext } from "../../../src/FolderContext";
28+
import configuration from "../../../src/configuration";
2829

2930
suite("SwiftPluginTaskProvider Unit Test Suite", () => {
3031
let workspaceContext: MockedObject<WorkspaceContext>;
@@ -58,6 +59,14 @@ suite("SwiftPluginTaskProvider Unit Test Suite", () => {
5859
});
5960

6061
suite("resolveTask", () => {
62+
const configurationMock = mockGlobalValue(configuration, "swiftEnvironmentVariables");
63+
64+
setup(async () => {
65+
configurationMock.setValue({
66+
FOO: "bar",
67+
});
68+
});
69+
6170
test("uses SwiftExecution", async () => {
6271
const taskProvider = new SwiftPluginTaskProvider(instance(workspaceContext));
6372
const task = new vscode.Task(
@@ -295,5 +304,24 @@ suite("SwiftPluginTaskProvider Unit Test Suite", () => {
295304
os.homedir(),
296305
]);
297306
});
307+
308+
test("provides environment", async () => {
309+
const taskProvider = new SwiftPluginTaskProvider(instance(workspaceContext));
310+
const task = new vscode.Task(
311+
{
312+
type: "swift",
313+
args: [],
314+
},
315+
workspaceFolder,
316+
"run PackageExe",
317+
"swift"
318+
);
319+
const resolvedTask = taskProvider.resolveTask(
320+
task,
321+
new vscode.CancellationTokenSource().token
322+
);
323+
const swiftExecution = resolvedTask.execution as SwiftExecution;
324+
assert.equal(swiftExecution.options.env?.FOO, "bar");
325+
});
298326
});
299327
});

0 commit comments

Comments
 (0)