Skip to content

Commit 8d8a33e

Browse files
authored
Enabling test explorer for unit tests. (#18218)
1 parent c2825d6 commit 8d8a33e

7 files changed

+367
-58
lines changed

.vscode-test.mjs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import * as testCli from '@vscode/test-cli';
2+
3+
export default testCli.defineConfig([
4+
{
5+
label: 'Unit Tests',
6+
files: 'out/test/**/*.test.js',
7+
version: 'insiders',
8+
mocha: {
9+
ui: 'tdd',
10+
timeout: 5000
11+
}
12+
}
13+
])

.vscode/extensions.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"EditorConfig.EditorConfig",
77
"GitHub.vscode-pull-request-github",
88
"ms-playwright.playwright",
9-
"esbenp.prettier-vscode"
9+
"esbenp.prettier-vscode",
10+
"ms-vscode.extension-test-runner"
1011
]
1112
}

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@
108108
"@typescript-eslint/parser": "^8.7.0",
109109
"@vscode/l10n": "^0.0.18",
110110
"@vscode/l10n-dev": "^0.0.35",
111-
"@vscode/test-electron": "^2.3.9",
111+
"@vscode/test-cli": "^0.0.10",
112+
"@vscode/test-electron": "^2.4.1",
112113
"@vscode/vsce": "^3.1.1",
113114
"@xmldom/xmldom": "0.8.4",
114115
"angular-in-memory-web-api": "0.1.13",

test/unit/initialization.test.ts

+7-31
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,18 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import * as Extension from "../../src/extension";
67
import * as assert from "assert";
7-
import * as vscode from "vscode";
88

9-
import * as Extension from "../../src/extension";
109
import ConnectionManager from "../../src/controllers/connectionManager";
1110
import MainController from "../../src/controllers/mainController";
12-
13-
function ensureExtensionIsActive(): Promise<any> {
14-
return new Promise((resolve, reject) => {
15-
waitForExtensionToBeActive(resolve);
16-
});
17-
}
18-
19-
function waitForExtensionToBeActive(resolve): void {
20-
if (
21-
typeof vscode.extensions.getExtension("ms-mssql.mssql") ===
22-
"undefined" ||
23-
!vscode.extensions.getExtension("ms-mssql.mssql").isActive
24-
) {
25-
// tslint:disable-next-line no-invalid-this Bind to the mocha context so it resolves properly
26-
setTimeout(waitForExtensionToBeActive.bind(this, resolve), 50);
27-
} else {
28-
resolve();
29-
}
30-
}
11+
import { activateExtension } from "./utils";
3112

3213
suite("Initialization Tests", () => {
33-
test("Connection manager is initialized properly", (done) => {
34-
// Wait for the extension to activate
35-
void ensureExtensionIsActive().then(async () => {
36-
// Verify that the connection manager was initialized properly
37-
let controller: MainController = await Extension.getController();
38-
let connectionManager: ConnectionManager =
39-
controller.connectionManager;
40-
assert.notStrictEqual(undefined, connectionManager.client);
41-
done();
42-
});
14+
test("Connection manager is initialized properly", async () => {
15+
await activateExtension();
16+
let controller: MainController = await Extension.getController();
17+
let connectionManager: ConnectionManager = controller.connectionManager;
18+
assert.notStrictEqual(undefined, connectionManager.client);
4319
});
4420
});

test/unit/mainController.test.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import * as LocalizedConstants from "../../src/constants/locConstants";
1414
import VscodeWrapper from "../../src/controllers/vscodeWrapper";
1515
import { TestExtensionContext } from "./stubs";
1616
import * as assert from "assert";
17+
import { activateExtension } from "./utils";
1718

18-
suite("MainController Tests", () => {
19+
suite("MainController Tests", function () {
1920
let document: vscode.TextDocument;
2021
let newDocument: vscode.TextDocument;
2122
let mainController: MainController;
@@ -27,6 +28,9 @@ suite("MainController Tests", () => {
2728
let newDocUriCallback: string;
2829

2930
setup(async () => {
31+
// Need to activate the extension to get the mainController
32+
await activateExtension();
33+
3034
// Setup a standard document and a new document
3135
docUri = "docURI.sql";
3236
newDocUri = "newDocURI.sql";
@@ -52,7 +56,6 @@ suite("MainController Tests", () => {
5256
// Resetting call back variables
5357
docUriCallback = "";
5458
newDocUriCallback = "";
55-
5659
// Using the mainController that was instantiated with the extension
5760
mainController = await Extension.getController();
5861

test/unit/utils.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import * as constants from "../../src/constants/constants";
7+
import * as vscode from "vscode";
8+
9+
export async function activateExtension() {
10+
const extension = vscode.extensions.getExtension(constants.extensionId);
11+
await extension.activate();
12+
}

0 commit comments

Comments
 (0)