Skip to content

Commit f1ca26f

Browse files
authored
Clear cache during teardowns (#1549)
Was an issue with using the cached tasks between successive extension activations. Also using, create over get variant of the helper to not go through all the extra paths of fetching and matching names
1 parent dadc3d3 commit f1ca26f

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

src/tasks/SwiftTaskProvider.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,20 @@ const buildAllTaskCache = (() => {
121121
set(name: string, folderContext: FolderContext, task: SwiftTask) {
122122
cache.set(key(name, folderContext, task), task);
123123
},
124+
reset() {
125+
cache.clear();
126+
},
124127
};
125128
})();
126129

130+
/**
131+
* Should only be used for tests purposes
132+
*/
133+
export function resetBuildAllTaskCache() {
134+
// Don't want to expose the whole cache, just the reset
135+
buildAllTaskCache.reset();
136+
}
137+
127138
function buildAllTaskName(folderContext: FolderContext, release: boolean): string {
128139
let buildTaskName = release
129140
? `${SwiftTaskProvider.buildAllName} - Release`

test/integration-tests/commands/dependency.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { WorkspaceContext } from "../../../src/WorkspaceContext";
2121
import { Commands } from "../../../src/commands";
2222
import { activateExtensionForSuite, folderInRootWorkspace } from "../utilities/testutilities";
2323
import { executeTaskAndWaitForResult, waitForNoRunningTasks } from "../../utilities/tasks";
24-
import { getBuildAllTask, SwiftTask } from "../../../src/tasks/SwiftTaskProvider";
24+
import { createBuildAllTask } from "../../../src/tasks/SwiftTaskProvider";
2525

2626
suite("Dependency Commmands Test Suite", function () {
2727
// full workflow's interaction with spm is longer than the default timeout
@@ -58,7 +58,7 @@ suite("Dependency Commmands Test Suite", function () {
5858

5959
setup(async () => {
6060
await workspaceContext.focusFolder(depsContext);
61-
await executeTaskAndWaitForResult((await getBuildAllTask(depsContext)) as SwiftTask);
61+
await executeTaskAndWaitForResult(await createBuildAllTask(depsContext));
6262
treeProvider = new ProjectPanelProvider(workspaceContext);
6363
});
6464

test/integration-tests/language/LanguageClientIntegration.test.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ import { LanguageClientManager } from "../../../src/sourcekit-lsp/LanguageClient
1919
import { WorkspaceContext } from "../../../src/WorkspaceContext";
2020
import { testAssetUri } from "../../fixtures";
2121
import { executeTaskAndWaitForResult, waitForNoRunningTasks } from "../../utilities/tasks";
22-
import { getBuildAllTask, SwiftTask } from "../../../src/tasks/SwiftTaskProvider";
22+
import { createBuildAllTask } from "../../../src/tasks/SwiftTaskProvider";
2323
import { activateExtensionForSuite, folderInRootWorkspace } from "../utilities/testutilities";
2424
import { waitForClientState, waitForIndex } from "../utilities/lsputilities";
2525
import { FolderContext } from "../../../src/FolderContext";
2626

2727
async function buildProject(ctx: WorkspaceContext, name: string) {
2828
await waitForNoRunningTasks();
2929
const folderContext = await folderInRootWorkspace(name, ctx);
30-
const task = (await getBuildAllTask(folderContext)) as SwiftTask;
30+
const task = await createBuildAllTask(folderContext);
3131
const { exitCode, output } = await executeTaskAndWaitForResult(task);
3232
expect(exitCode, `${output}`).to.equal(0);
3333
return folderContext;
@@ -41,11 +41,17 @@ suite("Language Client Integration Suite @slow", function () {
4141

4242
activateExtensionForSuite({
4343
async setup(ctx) {
44+
if (process.platform === "win32") {
45+
this.skip();
46+
return;
47+
}
4448
folderContext = await buildProject(ctx, "defaultPackage");
4549

4650
// Ensure lsp client is ready
4751
clientManager = ctx.languageClientManager.get(folderContext);
52+
await clientManager.restart();
4853
await waitForClientState(clientManager, langclient.State.Running);
54+
await waitForIndex(clientManager, folderContext.swiftVersion);
4955
},
5056
});
5157

test/integration-tests/utilities/testutilities.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { isDeepStrictEqual } from "util";
2525
import { Version } from "../../../src/utilities/version";
2626
import { SwiftOutputChannel } from "../../../src/ui/SwiftOutputChannel";
2727
import configuration from "../../../src/configuration";
28+
import { resetBuildAllTaskCache } from "../../../src/tasks/SwiftTaskProvider";
2829

2930
function getRootWorkspaceFolder(): vscode.WorkspaceFolder {
3031
const result = vscode.workspace.workspaceFolders?.at(0);
@@ -141,6 +142,7 @@ const extensionBootstrapper = (() => {
141142
await autoTeardown();
142143
}
143144
await waitForNoRunningTasks();
145+
resetBuildAllTaskCache();
144146
} catch (error) {
145147
if (workspaceContext) {
146148
printLogs(workspaceContext.outputChannel, "Error during test/suite teardown");

0 commit comments

Comments
 (0)