Skip to content

Commit 62e9d4f

Browse files
committed
Fix race condition in RunPesterTestsFromFile test
1 parent c67256e commit 62e9d4f

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

test/features/RunCode.test.ts

+19-5
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
import * as assert from "assert";
55
import * as fs from "fs";
66
import * as path from "path";
7-
import { suiteSetup } from "mocha";
87
import rewire = require("rewire");
98
import vscode = require("vscode");
109
import utils = require("../utils");
10+
import { sleep } from "../../src/utils";
11+
import { IPowerShellExtensionClient } from "../../src/features/ExternalApi";
1112

1213
// Setup function that is not exported.
1314
const customViews = rewire("../../src/features/RunCode");
@@ -19,8 +20,6 @@ enum LaunchType {
1920
}
2021

2122
suite("RunCode tests", () => {
22-
suiteSetup(utils.ensureExtensionIsActivated);
23-
2423
test("Can create the launch config", () => {
2524
const commandToRun: string = "Invoke-Build";
2625
const args: string[] = ["Clean"];
@@ -45,8 +44,23 @@ suite("RunCode tests", () => {
4544
test("Can run Pester tests from file", async () => {
4645
const pesterTests = path.resolve(__dirname, "../../../examples/Tests/SampleModule.Tests.ps1");
4746
assert(fs.existsSync(pesterTests));
47+
48+
// Get interface to extension.
49+
const extension = await utils.ensureExtensionIsActivated();
50+
const client = extension!.exports as IPowerShellExtensionClient;
51+
const sessionId = client.registerExternalExtension(utils.extensionId);
52+
53+
// Force PowerShell extension to finish connecting. This is necessary
54+
// because we can't start the PowerShell debugger until the session is
55+
// connected, which is different from the extension being activated. We
56+
// also need to open the file so the command has it as its argument.
4857
await vscode.commands.executeCommand("vscode.open", vscode.Uri.file(pesterTests));
58+
await client.getPowerShellVersionDetails(sessionId);
59+
60+
// Now run the Pester tests.
4961
assert(await vscode.commands.executeCommand("PowerShell.RunPesterTestsFromFile"));
50-
// Start up can take some time...so set the timeout to 30 seconds.
51-
}).timeout(30000);
62+
await sleep(5000);
63+
await vscode.debug.stopDebugging();
64+
// PowerShell can take a while, so set the timeout to a full minute.
65+
}).timeout(60000);
5266
});

0 commit comments

Comments
 (0)