Skip to content

Commit 1b9a7f8

Browse files
Remove Record<string, never> type when activating extension
1 parent c9e0618 commit 1b9a7f8

15 files changed

Lines changed: 79 additions & 117 deletions

extensions/ql-vscode/src/extension.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ const MIN_VERSION = "1.67.0";
289289
*/
290290
export async function activate(
291291
ctx: ExtensionContext,
292-
): Promise<CodeQLExtensionInterface | Record<string, never>> {
292+
): Promise<CodeQLExtensionInterface | undefined> {
293293
void extLogger.log(`Starting ${extensionId} extension`);
294294
if (extension === undefined) {
295295
throw new Error(`Can't find extension ${extensionId}`);
@@ -379,9 +379,11 @@ export async function activate(
379379
},
380380
);
381381

382-
variantAnalysisViewSerializer.onExtensionLoaded(
383-
codeQlExtension.variantAnalysisManager,
384-
);
382+
if (codeQlExtension !== undefined) {
383+
variantAnalysisViewSerializer.onExtensionLoaded(
384+
codeQlExtension.variantAnalysisManager,
385+
);
386+
}
385387

386388
return codeQlExtension;
387389
}
@@ -571,7 +573,7 @@ async function installOrUpdateThenTryActivate(
571573
distributionManager: DistributionManager,
572574
distributionConfigListener: DistributionConfigListener,
573575
config: DistributionUpdateConfig,
574-
): Promise<CodeQLExtensionInterface | Record<string, never>> {
576+
): Promise<CodeQLExtensionInterface | undefined> {
575577
await installOrUpdateDistribution(ctx, app, distributionManager, config);
576578

577579
try {
@@ -585,20 +587,19 @@ async function installOrUpdateThenTryActivate(
585587
// Display the warnings even if the extension has already activated.
586588
const distributionResult =
587589
await getDistributionDisplayingDistributionWarnings(distributionManager);
588-
let extensionInterface: CodeQLExtensionInterface | Record<string, never> = {};
589590
if (
590591
!beganMainExtensionActivation &&
591592
distributionResult.kind !== FindDistributionResultKind.NoDistribution
592593
) {
593-
extensionInterface = await activateWithInstalledDistribution(
594+
return await activateWithInstalledDistribution(
594595
ctx,
595596
app,
596597
distributionManager,
597598
distributionConfigListener,
598599
);
599-
} else if (
600-
distributionResult.kind === FindDistributionResultKind.NoDistribution
601-
) {
600+
}
601+
602+
if (distributionResult.kind === FindDistributionResultKind.NoDistribution) {
602603
registerErrorStubs([checkForUpdatesCommand], (command) => async () => {
603604
const installActionName = "Install CodeQL CLI";
604605
const chosenAction = await showAndLogErrorMessage(
@@ -622,7 +623,7 @@ async function installOrUpdateThenTryActivate(
622623
}
623624
});
624625
}
625-
return extensionInterface;
626+
return undefined;
626627
}
627628

628629
const PACK_GLOBS = [

extensions/ql-vscode/test/vscode-tests/activated-extension/databases/db-panel.test.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { commands, extensions, window } from "vscode";
1+
import { commands, window } from "vscode";
22

3-
import { CodeQLExtensionInterface } from "../../../../src/extension";
43
import { readJson } from "fs-extra";
54
import * as path from "path";
65
import {
@@ -15,19 +14,15 @@ import { DbListKind } from "../../../../src/databases/db-item";
1514
import { createDbTreeViewItemSystemDefinedList } from "../../../../src/databases/ui/db-tree-view-item";
1615
import { createRemoteSystemDefinedListDbItem } from "../../../factories/db-item-factories";
1716
import { DbConfigStore } from "../../../../src/databases/config/db-config-store";
17+
import { getActivatedExtension } from "../../global.helper";
1818

1919
jest.setTimeout(60_000);
2020

2121
describe("Db panel UI commands", () => {
22-
let extension: CodeQLExtensionInterface | Record<string, never>;
2322
let storagePath: string;
2423

2524
beforeEach(async () => {
26-
extension = await extensions
27-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
28-
"GitHub.vscode-codeql",
29-
)!
30-
.activate();
25+
const extension = await getActivatedExtension();
3126

3227
storagePath =
3328
extension.ctx.storageUri?.fsPath || extension.ctx.globalStorageUri.fsPath;

extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-manager.test.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import {
22
commands,
33
env,
4-
extensions,
54
TextDocument,
65
TextEditor,
76
Uri,
87
window,
98
workspace,
109
} from "vscode";
11-
import { CodeQLExtensionInterface } from "../../../../src/extension";
1210
import { extLogger } from "../../../../src/common";
1311
import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client";
1412
import * as ghActionsApiClient from "../../../../src/variant-analysis/gh-api/gh-actions-api-client";
@@ -20,7 +18,7 @@ import { Response } from "node-fetch";
2018

2119
import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager";
2220
import { CodeQLCliServer } from "../../../../src/cli";
23-
import { storagePath } from "../../global.helper";
21+
import { getActivatedExtension, storagePath } from "../../global.helper";
2422
import { VariantAnalysisResultsManager } from "../../../../src/variant-analysis/variant-analysis-results-manager";
2523
import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis";
2624
import * as VariantAnalysisModule from "../../../../src/variant-analysis/shared/variant-analysis";
@@ -67,11 +65,7 @@ describe("Variant Analysis Manager", () => {
6765
scannedRepos,
6866
});
6967

70-
const extension = await extensions
71-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
72-
"GitHub.vscode-codeql",
73-
)!
74-
.activate();
68+
const extension = await getActivatedExtension();
7569
const cli = mockedObject<CodeQLCliServer>({});
7670
app = new ExtensionApp(extension.ctx);
7771
const dbManager = new DbManager(app, new DbConfigStore(app));

extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-monitor.test.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { commands, extensions } from "vscode";
2-
import { CodeQLExtensionInterface } from "../../../../src/extension";
1+
import { commands } from "vscode";
32

43
import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client";
54
import { VariantAnalysisMonitor } from "../../../../src/variant-analysis/variant-analysis-monitor";
@@ -25,11 +24,11 @@ import {
2524
import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis";
2625
import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager";
2726
import { testCredentialsWithStub } from "../../../factories/authentication";
27+
import { getActivatedExtension } from "../../global.helper";
2828

2929
jest.setTimeout(60_000);
3030

3131
describe("Variant Analysis Monitor", () => {
32-
let extension: CodeQLExtensionInterface | Record<string, never>;
3332
let mockGetVariantAnalysis: jest.SpiedFunction<
3433
typeof ghApiClient.getVariantAnalysis
3534
>;
@@ -48,11 +47,7 @@ describe("Variant Analysis Monitor", () => {
4847

4948
shouldCancelMonitor = jest.fn();
5049

51-
extension = await extensions
52-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
53-
"GitHub.vscode-codeql",
54-
)!
55-
.activate();
50+
const extension = await getActivatedExtension();
5651
variantAnalysisMonitor = new VariantAnalysisMonitor(shouldCancelMonitor);
5752
variantAnalysisMonitor.onVariantAnalysisChange(onVariantAnalysisChangeSpy);
5853

extensions/ql-vscode/test/vscode-tests/cli-integration/databaseFetcher.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { join } from "path";
2-
import { extensions, CancellationToken, Uri, window } from "vscode";
2+
import { CancellationToken, Uri, window } from "vscode";
33

4-
import { CodeQLExtensionInterface } from "../../../src/extension";
54
import { CodeQLCliServer } from "../../../src/cli";
65
import { DatabaseManager } from "../../../src/local-databases";
76
import {
87
importArchiveDatabase,
98
promptImportInternetDatabase,
109
} from "../../../src/databaseFetcher";
11-
import { cleanDatabases, dbLoc, DB_URL, storagePath } from "../global.helper";
10+
import {
11+
cleanDatabases,
12+
dbLoc,
13+
DB_URL,
14+
getActivatedExtension,
15+
storagePath,
16+
} from "../global.helper";
1217
import { createMockCommandManager } from "../../__mocks__/commandsMock";
1318

1419
jest.setTimeout(60_000);
@@ -30,11 +35,7 @@ describe("DatabaseFetcher", () => {
3035
jest.spyOn(window, "showErrorMessage").mockResolvedValue(undefined);
3136
jest.spyOn(window, "showInformationMessage").mockResolvedValue(undefined);
3237

33-
const extension = await extensions
34-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
35-
"GitHub.vscode-codeql",
36-
)!
37-
.activate();
38+
const extension = await getActivatedExtension();
3839
if ("databaseManager" in extension) {
3940
databaseManager = extension.databaseManager;
4041
} else {

extensions/ql-vscode/test/vscode-tests/cli-integration/helpers.test.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { join } from "path";
2-
import { extensions } from "vscode";
32

43
import { CodeQLCliServer } from "../../../src/cli";
5-
import { CodeQLExtensionInterface } from "../../../src/extension";
64
import { tryGetQueryMetadata } from "../../../src/helpers";
5+
import { getActivatedExtension } from "../global.helper";
76

87
// up to 3 minutes per test
98
jest.setTimeout(3 * 60 * 1000);
@@ -14,11 +13,7 @@ describe("helpers (with CLI)", () => {
1413
let cli: CodeQLCliServer;
1514

1615
beforeEach(async () => {
17-
const extension = await extensions
18-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
19-
"GitHub.vscode-codeql",
20-
)!
21-
.activate();
16+
const extension = await getActivatedExtension();
2217
if ("cliServer" in extension) {
2318
cli = extension.cliServer;
2419
} else {

extensions/ql-vscode/test/vscode-tests/cli-integration/legacy-query.test.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ import * as messages from "../../../src/pure/legacy-messages";
77
import * as qsClient from "../../../src/legacy-query-server/queryserver-client";
88
import * as cli from "../../../src/cli";
99
import { CellValue } from "../../../src/pure/bqrs-cli-types";
10-
import { extensions } from "vscode";
11-
import { CodeQLExtensionInterface } from "../../../src/extension";
1210
import { describeWithCodeQL } from "../cli";
1311
import { QueryServerClient } from "../../../src/legacy-query-server/queryserver-client";
1412
import { extLogger, ProgressReporter } from "../../../src/common";
1513
import { createMockApp } from "../../__mocks__/appMock";
14+
import { getActivatedExtension } from "../global.helper";
1615

1716
const baseDir = join(__dirname, "../../../test/data");
1817

@@ -112,11 +111,7 @@ describeWithCodeQL()("using the legacy query server", () => {
112111
let cliServer: cli.CodeQLCliServer;
113112

114113
beforeAll(async () => {
115-
const extension = await extensions
116-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
117-
"GitHub.vscode-codeql",
118-
)!
119-
.activate();
114+
const extension = await getActivatedExtension();
120115
if ("cliServer" in extension) {
121116
cliServer = extension.cliServer;
122117
cliServer.quiet = true;

extensions/ql-vscode/test/vscode-tests/cli-integration/new-query.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ import * as messages from "../../../src/pure/new-messages";
55
import * as qsClient from "../../../src/query-server/queryserver-client";
66
import * as cli from "../../../src/cli";
77
import { CellValue } from "../../../src/pure/bqrs-cli-types";
8-
import { extensions, Uri } from "vscode";
9-
import { CodeQLExtensionInterface } from "../../../src/extension";
8+
import { Uri } from "vscode";
109
import { describeWithCodeQL } from "../cli";
1110
import { QueryServerClient } from "../../../src/query-server/queryserver-client";
1211
import { extLogger, ProgressReporter } from "../../../src/common";
1312
import { QueryResultType } from "../../../src/pure/new-messages";
14-
import { cleanDatabases, dbLoc, storagePath } from "../global.helper";
13+
import {
14+
cleanDatabases,
15+
dbLoc,
16+
getActivatedExtension,
17+
storagePath,
18+
} from "../global.helper";
1519
import { importArchiveDatabase } from "../../../src/databaseFetcher";
1620
import { createMockCommandManager } from "../../__mocks__/commandsMock";
1721

@@ -110,11 +114,7 @@ describeWithCodeQL()("using the new query server", () => {
110114
let supportNewQueryServer = true;
111115

112116
beforeAll(async () => {
113-
const extension = await extensions
114-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
115-
"GitHub.vscode-codeql",
116-
)!
117-
.activate();
117+
const extension = await getActivatedExtension();
118118
if ("cliServer" in extension && "databaseManager" in extension) {
119119
cliServer = extension.cliServer;
120120

extensions/ql-vscode/test/vscode-tests/cli-integration/packaging.test.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import { extensions, window } from "vscode";
1+
import { window } from "vscode";
22
import { join } from "path";
33

44
import { CodeQLCliServer } from "../../../src/cli";
5-
import { CodeQLExtensionInterface } from "../../../src/extension";
65
import { getErrorMessage } from "../../../src/pure/helpers-pure";
76

87
import * as helpers from "../../../src/helpers";
@@ -11,6 +10,7 @@ import {
1110
handleInstallPackDependencies,
1211
} from "../../../src/packaging";
1312
import { mockedQuickPickItem } from "../utils/mocking.helpers";
13+
import { getActivatedExtension } from "../global.helper";
1414

1515
// up to 3 minutes per test
1616
jest.setTimeout(3 * 60 * 1000);
@@ -41,11 +41,7 @@ describe("Packaging commands", () => {
4141
.spyOn(helpers, "showAndLogInformationMessage")
4242
.mockResolvedValue(undefined);
4343

44-
const extension = await extensions
45-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
46-
"GitHub.vscode-codeql",
47-
)!
48-
.activate();
44+
const extension = await getActivatedExtension();
4945
if ("cliServer" in extension) {
5046
cli = extension.cliServer;
5147
} else {

extensions/ql-vscode/test/vscode-tests/cli-integration/queries.test.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import {
2-
CancellationToken,
3-
commands,
4-
ExtensionContext,
5-
extensions,
6-
Uri,
7-
} from "vscode";
1+
import { CancellationToken, commands, ExtensionContext, Uri } from "vscode";
82
import { join, dirname } from "path";
93
import {
104
pathExistsSync,
@@ -16,8 +10,12 @@ import {
1610
import { load, dump } from "js-yaml";
1711

1812
import { DatabaseItem, DatabaseManager } from "../../../src/local-databases";
19-
import { CodeQLExtensionInterface } from "../../../src/extension";
20-
import { cleanDatabases, dbLoc, storagePath } from "../global.helper";
13+
import {
14+
cleanDatabases,
15+
dbLoc,
16+
getActivatedExtension,
17+
storagePath,
18+
} from "../global.helper";
2119
import { importArchiveDatabase } from "../../../src/databaseFetcher";
2220
import { CliVersionConstraint, CodeQLCliServer } from "../../../src/cli";
2321
import { describeWithCodeQL } from "../cli";
@@ -48,11 +46,7 @@ describeWithCodeQL()("Queries", () => {
4846
let qlFile: string;
4947

5048
beforeEach(async () => {
51-
const extension = await extensions
52-
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
53-
"GitHub.vscode-codeql",
54-
)!
55-
.activate();
49+
const extension = await getActivatedExtension();
5650
if ("databaseManager" in extension) {
5751
databaseManager = extension.databaseManager;
5852
cli = extension.cliServer;

0 commit comments

Comments
 (0)