Skip to content

Commit d6db459

Browse files
committed
Move setting from backgroundCompilation subsection
- Setting `swift.backgroundCompilation` to `true` was causing the value of `swift.backgroundCompilation.useDefaultTask` to be ignored
1 parent b48b82b commit d6db459

File tree

4 files changed

+94
-78
lines changed

4 files changed

+94
-78
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- Prompt to restart `SourceKit-LSP` after changing `.sourcekit-lsp/config.json` files ([#1744](https://github.com/swiftlang/vscode-swift/issues/1744))
99
- Prompt to cancel and replace the active test run if one is in flight ([#1774](https://github.com/swiftlang/vscode-swift/pull/1774))
1010
- A walkthrough for first time extension users ([#1560](https://github.com/swiftlang/vscode-swift/issues/1560))
11-
- New `swift.backgroundCompilation.useDefaultTask` setting that will run the default `swift` build task on save ([#1857](https://github.com/swiftlang/vscode-swift/pull/1857))
11+
- New `swift.backgroundCompilationUsesDefaultTask` setting that will run the default `swift` build task on save ([#1857](https://github.com/swiftlang/vscode-swift/pull/1857))
1212

1313
### Fixed
1414

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@
598598
"markdownDescription": "Run `swift build` in the background whenever a file is saved. It is possible the background compilation will already be running when you attempt a compile yourself, so this is disabled by default.",
599599
"scope": "machine-overridable"
600600
},
601-
"swift.backgroundCompilation.useDefaultTask": {
601+
"swift.backgroundCompilationUsesDefaultTask": {
602602
"type": "boolean",
603603
"default": false,
604604
"markdownDescription": "Use the default build task configured using the `Tasks: Configure Default Build Task` command when executing the background compilation. `#swift.backgroundCompilation#` must be enabled.",

src/configuration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ const configuration = {
422422
/** use the default `swift` build task when background compilation is enabled */
423423
get useDefaultTask(): boolean {
424424
return vscode.workspace
425-
.getConfiguration("swift.backgroundCompilation")
426-
.get<boolean>("useDefaultTask", false);
425+
.getConfiguration("swift")
426+
.get<boolean>("backgroundCompilationUsesDefaultTask", false);
427427
},
428428
/** background indexing */
429429
get backgroundIndexing(): "on" | "off" | "auto" {

test/integration-tests/BackgroundCompilation.test.ts

Lines changed: 90 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -18,121 +18,137 @@ import * as vscode from "vscode";
1818
import { BackgroundCompilation } from "@src/BackgroundCompilation";
1919
import { FolderContext } from "@src/FolderContext";
2020
import { WorkspaceContext } from "@src/WorkspaceContext";
21-
import configuration from "@src/configuration";
2221
import { getBuildAllTask } from "@src/tasks/SwiftTaskProvider";
2322

24-
import { mockGlobalObject, mockGlobalValue } from "../MockUtils";
23+
import { mockGlobalObject } from "../MockUtils";
2524
import { testAssetUri } from "../fixtures";
2625
import { tag } from "../tags";
2726
import { closeAllEditors } from "../utilities/commands";
2827
import { waitForNoRunningTasks } from "../utilities/tasks";
2928
import {
30-
activateExtensionForTest,
29+
activateExtensionForSuite,
3130
folderInRootWorkspace,
3231
updateSettings,
3332
} from "./utilities/testutilities";
3433

3534
tag("large").suite("BackgroundCompilation Test Suite", () => {
36-
let subscriptions: vscode.Disposable[];
3735
let workspaceContext: WorkspaceContext;
3836
let folderContext: FolderContext;
3937
let buildAllTask: vscode.Task;
4038

41-
activateExtensionForTest({
42-
async setup(ctx) {
43-
subscriptions = [];
44-
workspaceContext = ctx;
45-
folderContext = await folderInRootWorkspace("defaultPackage", workspaceContext);
46-
buildAllTask = await getBuildAllTask(folderContext);
47-
return await updateSettings({
48-
"swift.backgroundCompilation": true,
49-
});
50-
},
51-
});
39+
async function setupFolder(ctx: WorkspaceContext) {
40+
workspaceContext = ctx;
41+
folderContext = await folderInRootWorkspace("defaultPackage", workspaceContext);
42+
buildAllTask = await getBuildAllTask(folderContext);
43+
}
5244

53-
suiteTeardown(async () => {
54-
subscriptions.forEach(s => s.dispose());
55-
await closeAllEditors();
56-
});
45+
suite("build all on save", () => {
46+
let subscriptions: vscode.Disposable[];
5747

58-
test("build all on save", async () => {
59-
const taskStartPromise = new Promise<void>(resolve => {
60-
subscriptions.push(
61-
vscode.tasks.onDidStartTask(e => {
62-
const task = e.execution.task;
63-
if (task.name.includes("Build All")) {
64-
resolve();
65-
}
66-
})
67-
);
48+
activateExtensionForSuite({
49+
async setup(ctx) {
50+
subscriptions = [];
51+
await setupFolder(ctx);
52+
return await updateSettings({
53+
"swift.backgroundCompilation": true,
54+
});
55+
},
6856
});
6957

70-
const uri = testAssetUri("defaultPackage/Sources/PackageExe/main.swift");
71-
const doc = await vscode.workspace.openTextDocument(uri.fsPath);
72-
await vscode.window.showTextDocument(doc);
73-
await vscode.workspace.save(uri);
58+
suiteTeardown(async () => {
59+
subscriptions.forEach(s => s.dispose());
60+
await closeAllEditors();
61+
});
62+
63+
test("runs build task", async () => {
64+
const taskStartPromise = new Promise<void>(resolve => {
65+
subscriptions.push(
66+
vscode.tasks.onDidStartTask(e => {
67+
const task = e.execution.task;
68+
if (task.name.includes("Build All")) {
69+
resolve();
70+
}
71+
})
72+
);
73+
});
7474

75-
await taskStartPromise;
76-
await waitForNoRunningTasks();
75+
const uri = testAssetUri("defaultPackage/Sources/PackageExe/main.swift");
76+
const doc = await vscode.workspace.openTextDocument(uri.fsPath);
77+
await vscode.window.showTextDocument(doc);
78+
await vscode.workspace.save(uri);
79+
80+
await taskStartPromise;
81+
await waitForNoRunningTasks();
82+
});
7783
});
7884

7985
suite("getTask", () => {
8086
const tasksMock = mockGlobalObject(vscode, "tasks");
8187
let swiftTask: vscode.Task;
8288
let nonSwiftTask: vscode.Task;
8389
let backgroundConfiguration: BackgroundCompilation;
84-
const useDefaultTaskConfig = mockGlobalValue(configuration, "useDefaultTask");
85-
86-
setup(async () => {
87-
nonSwiftTask = new vscode.Task(
88-
{
89-
type: "shell",
90-
args: ["./build.sh"],
91-
cwd: "defaultPackage",
92-
group: {
93-
id: "build",
94-
isDefault: true,
90+
91+
activateExtensionForSuite({
92+
async setup(ctx) {
93+
await setupFolder(ctx);
94+
nonSwiftTask = new vscode.Task(
95+
{
96+
type: "shell",
97+
args: ["./build.sh"],
98+
cwd: "defaultPackage",
99+
group: {
100+
id: "build",
101+
isDefault: true,
102+
},
103+
label: "Default build",
95104
},
96-
label: "Default build",
97-
},
98-
folderContext.workspaceFolder,
99-
"Default build",
100-
"shell"
101-
);
102-
swiftTask = new vscode.Task(
103-
{
104-
type: "swift",
105-
args: ["build"],
106-
cwd: "defaultPackage",
107-
group: "build",
108-
label: "swift build",
109-
},
110-
folderContext.workspaceFolder,
111-
"Swift build",
112-
"swift"
113-
);
114-
backgroundConfiguration = new BackgroundCompilation(folderContext);
105+
folderContext.workspaceFolder,
106+
"Default build",
107+
"shell"
108+
);
109+
nonSwiftTask.group = { id: "build", isDefault: true };
110+
swiftTask = new vscode.Task(
111+
{
112+
type: "swift",
113+
args: ["build"],
114+
cwd: "defaultPackage",
115+
label: "swift build",
116+
},
117+
folderContext.workspaceFolder,
118+
"Swift build",
119+
"swift"
120+
);
121+
swiftTask.group = { id: "build", isDefault: true };
122+
return await updateSettings({
123+
"swift.backgroundCompilation": true,
124+
"swift.backgroundCompilationUsesDefaultTask": true,
125+
});
126+
},
127+
});
128+
129+
setup(() => {
115130
tasksMock.fetchTasks.resolves([nonSwiftTask, swiftTask, buildAllTask]);
116-
tasksMock.fetchTasks.withArgs(match.object).resolves([swiftTask, buildAllTask]);
117-
useDefaultTaskConfig.setValue(true);
131+
tasksMock.fetchTasks.withArgs(match.object).resolves([swiftTask, buildAllTask]); // Call for fetchTasks({ type: "swift" })
132+
backgroundConfiguration = new BackgroundCompilation(folderContext);
118133
});
119134

120135
teardown(() => {
121136
backgroundConfiguration.dispose();
122137
});
123138

124-
test("non-swift default task", async () => {
125-
expect(await backgroundConfiguration.getTask()).to.equal(buildAllTask);
126-
});
127-
128139
test("swift default task", async () => {
129-
swiftTask.group = { id: "build", isDefault: true };
130140
expect(await backgroundConfiguration.getTask()).to.equal(swiftTask);
131141
});
132142

133143
test("don't use default task", async () => {
134-
useDefaultTaskConfig.setValue(false);
135-
swiftTask.group = { id: "build", isDefault: true };
144+
await vscode.workspace
145+
.getConfiguration("swift")
146+
.update("backgroundCompilationUsesDefaultTask", false);
147+
expect(await backgroundConfiguration.getTask()).to.equal(buildAllTask);
148+
});
149+
150+
test("non-swift default task", async () => {
151+
swiftTask.group = { id: "build", isDefault: false };
136152
expect(await backgroundConfiguration.getTask()).to.equal(buildAllTask);
137153
});
138154
});

0 commit comments

Comments
 (0)