Skip to content

Commit 7dbe868

Browse files
add the concept of test tags to set timeouts
1 parent bcd0a76 commit 7dbe868

23 files changed

+228
-132
lines changed

.github/workflows/pull_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
VSCODE_SWIFT_VSIX_ID=${{needs.package.outputs.artifact-id}}
6969
GITHUB_REPOSITORY=${{github.repository}}
7070
windows_pre_build_command: . .github\workflows\scripts\windows\setup.ps1
71-
windows_build_command: scripts\test_windows.ps1
71+
windows_build_command: Invoke-Program scripts\test_windows.ps1
7272
enable_windows_docker: false
7373

7474
soundness:

.vscode-test.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ const path = require("path");
1717
const { version, publisher, name } = require("./package.json");
1818

1919
const isCIBuild = process.env["CI"] === "1";
20-
const isFastTestRun = process.env["FAST_TEST_RUN"] === "1";
2120

2221
const dataDir = process.env["VSCODE_DATA_DIR"];
2322

@@ -115,8 +114,6 @@ module.exports = defineConfig({
115114
color: true,
116115
timeout,
117116
forbidOnly: isCIBuild,
118-
grep: isFastTestRun ? "@slow" : undefined,
119-
invert: isFastTestRun,
120117
slow: 10000,
121118
retries: 1,
122119
reporter: path.join(__dirname, ".mocha-reporter.js"),
@@ -151,8 +148,6 @@ module.exports = defineConfig({
151148
color: true,
152149
timeout,
153150
forbidOnly: isCIBuild,
154-
grep: isFastTestRun ? "@slow" : undefined,
155-
invert: isFastTestRun,
156151
slow: 10000,
157152
retries: 1,
158153
reporter: path.join(__dirname, ".mocha-reporter.js"),

test/common.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ import * as chai from "chai";
1919
import * as sinonChai from "sinon-chai";
2020
import * as chaiAsPromised from "chai-as-promised";
2121
import * as chaiSubset from "chai-subset";
22+
import { installTagSupport } from "./tags";
2223

2324
chai.use(sinonChai);
2425
chai.use(chaiAsPromised);
2526
chai.use(chaiSubset);
27+
28+
installTagSupport();

test/integration-tests/BackgroundCompilation.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ import { WorkspaceContext } from "../../src/WorkspaceContext";
1818
import { testAssetUri } from "../fixtures";
1919
import { activateExtensionForTest, updateSettings } from "./utilities/testutilities";
2020
import { closeAllEditors } from "../utilities/commands";
21+
import { tag } from "../tags";
2122

22-
suite("BackgroundCompilation Test Suite", () => {
23+
tag("large").suite("BackgroundCompilation Test Suite", () => {
2324
let workspaceContext: WorkspaceContext;
2425

2526
activateExtensionForTest({
@@ -36,7 +37,7 @@ suite("BackgroundCompilation Test Suite", () => {
3637
await closeAllEditors();
3738
});
3839

39-
test("build all on save @slow", async () => {
40+
test("build all on save", async () => {
4041
const taskPromise = new Promise<void>(res => {
4142
vscode.tasks.onDidStartTask(e => {
4243
const task = e.execution.task;
@@ -56,5 +57,5 @@ suite("BackgroundCompilation Test Suite", () => {
5657
await vscode.workspace.save(uri);
5758

5859
await taskPromise;
59-
}).timeout(180000);
60+
});
6061
});

test/integration-tests/DiagnosticsManager.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
} from "./utilities/testutilities";
3434
import { DiagnosticStyle } from "../../src/configuration";
3535
import { expect } from "chai";
36+
import { tag } from "../tags";
3637

3738
const isEqual = (d1: vscode.Diagnostic, d2: vscode.Diagnostic) => {
3839
return (
@@ -66,9 +67,7 @@ function assertWithoutDiagnostic(uri: vscode.Uri, expected: vscode.Diagnostic) {
6667
);
6768
}
6869

69-
suite("DiagnosticsManager Test Suite", function () {
70-
this.timeout(60 * 1000 * 5); // Allow up to 5 minutes for build
71-
70+
tag("medium").suite("DiagnosticsManager Test Suite", function () {
7271
let workspaceContext: WorkspaceContext;
7372
let folderContext: FolderContext;
7473
let cFolderContext: FolderContext;

test/integration-tests/ExtensionActivation.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
import { WorkspaceContext } from "../../src/WorkspaceContext";
2525
import { testAssetUri } from "../fixtures";
2626
import { assertContains } from "./testexplorer/utilities";
27+
import { tag } from "../tags";
2728

2829
suite("Extension Activation/Deactivation Tests", () => {
2930
suite("Extension Activation", () => {
@@ -101,9 +102,7 @@ suite("Extension Activation/Deactivation Tests", () => {
101102
});
102103
});
103104

104-
suite("Activates for cmake projects", function () {
105-
this.timeout(60000);
106-
105+
tag("medium").suite("Activates for cmake projects", function () {
107106
let workspaceContext: WorkspaceContext;
108107

109108
activateExtensionForTest({

test/integration-tests/SwiftPackage.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import { testAssetUri } from "../fixtures";
1717
import { SwiftPackage } from "../../src/SwiftPackage";
1818
import { SwiftToolchain } from "../../src/toolchain/toolchain";
1919
import { Version } from "../../src/utilities/version";
20+
import { tag } from "../tags";
2021

21-
suite("SwiftPackage Test Suite", function () {
22-
this.timeout(5 * 60 * 1000); // 5 minute timeout
22+
tag("medium").suite("SwiftPackage Test Suite", function () {
2323
let toolchain: SwiftToolchain;
2424

2525
setup(async () => {

test/integration-tests/SwiftSnippet.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ import {
2929
import { WorkspaceContext } from "../../src/WorkspaceContext";
3030
import { closeAllEditors } from "../utilities/commands";
3131
import { Commands } from "../../src/commands";
32+
import { tag } from "../tags";
3233

33-
suite("SwiftSnippet Test Suite @slow", function () {
34-
this.timeout(180000);
35-
34+
tag("large").suite("SwiftSnippet Test Suite", function () {
3635
const uri = testAssetUri("defaultPackage/Snippets/hello.swift");
3736
const breakpoints = [
3837
new vscode.SourceBreakpoint(new vscode.Location(uri, new vscode.Position(2, 0))),

test/integration-tests/WorkspaceContext.test.ts

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
import { FolderContext } from "../../src/FolderContext";
2929
import { assertContains } from "./testexplorer/utilities";
3030
import { resolveScope } from "../../src/utilities/tasks";
31+
import { tag } from "../tags";
3132

3233
function assertContainsArg(execution: SwiftExecution, arg: string) {
3334
assert(execution?.args.find(a => a === arg));
@@ -40,7 +41,7 @@ function assertNotContainsArg(execution: SwiftExecution, arg: string) {
4041
);
4142
}
4243

43-
suite("WorkspaceContext Test Suite", () => {
44+
tag("medium").suite("WorkspaceContext Test Suite", () => {
4445
let workspaceContext: WorkspaceContext;
4546
const packageFolder: vscode.Uri = testAssetUri("defaultPackage");
4647

@@ -88,7 +89,7 @@ suite("WorkspaceContext Test Suite", () => {
8889
} finally {
8990
observer?.dispose();
9091
}
91-
}).timeout(60000 * 2);
92+
});
9293
});
9394

9495
suite("Tasks", function () {
@@ -106,9 +107,6 @@ suite("WorkspaceContext Test Suite", () => {
106107
}
107108
});
108109

109-
// Was hitting a timeout in suiteSetup during CI build once in a while
110-
this.timeout(15000);
111-
112110
test("Default Task values", async () => {
113111
const folder = workspaceContext.folders.find(
114112
f => f.folder.fsPath === packageFolder.fsPath
@@ -190,32 +188,16 @@ suite("WorkspaceContext Test Suite", () => {
190188
const execution = buildAllTask.execution as SwiftExecution;
191189
assertContainsArg(execution, "--replace-scm-with-registry");
192190
});
193-
194-
test("Swift Path", async () => {
195-
/* Temporarily disabled (need swift path to update immediately for this to work)
196-
const folder = workspaceContext.folders.find(
197-
f => f.folder.fsPath === packageFolder.fsPath
198-
);
199-
assert(folder);
200-
await swiftConfig.update("path", "/usr/bin/swift");
201-
const buildAllTask = createBuildAllTask(folder);
202-
const execution = buildAllTask.execution as SwiftExecution;
203-
assert.strictEqual(execution?.command, "/usr/bin/swift");
204-
await swiftConfig.update("path", "");*/
205-
});
206191
});
207192

208193
suite("Toolchain", function () {
209-
// Increase the timeout as this takes several seconds longer for the codeWorkspaceTests variant
210-
this.timeout(60000);
211-
212194
activateExtensionForSuite({
213195
async setup(ctx) {
214196
workspaceContext = ctx;
215197
},
216198
});
217199

218-
test("get project templates", async () => {
200+
tag("small").test("get project templates", async () => {
219201
// This is only supported in swift versions >=5.8.0
220202
const swiftVersion = workspaceContext.globalToolchain.swiftVersion;
221203
if (swiftVersion.isLessThan(new Version(5, 8, 0))) {
@@ -248,6 +230,6 @@ suite("WorkspaceContext Test Suite", () => {
248230
name: "Build Tool Plugin",
249231
description: "A package that vends a build tool plugin.",
250232
});
251-
}).timeout(1000);
233+
});
252234
});
253-
}).timeout(15000);
235+
});

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ import { Commands } from "../../../src/commands";
2323
import { continueSession, waitForDebugAdapterRequest } from "../../utilities/debug";
2424
import { activateExtensionForSuite, folderInRootWorkspace } from "../utilities/testutilities";
2525
import { Version } from "../../../src/utilities/version";
26+
import { tag } from "../../tags";
2627

27-
suite("Build Commands @slow", function () {
28-
// Default timeout is a bit too short, give it a little bit more time
29-
this.timeout(3 * 60 * 1000);
30-
28+
tag("large").suite("Build Commands", function () {
3129
let folderContext: FolderContext;
3230
let workspaceContext: WorkspaceContext;
3331
const uri = testAssetUri("defaultPackage/Sources/PackageExe/main.swift");

0 commit comments

Comments
 (0)