Remove Record<string, never> type when activating extension

This commit is contained in:
Robert
2023-03-23 17:18:55 +00:00
parent c9e0618884
commit 1b9a7f89c3
15 changed files with 79 additions and 117 deletions

View File

@@ -289,7 +289,7 @@ const MIN_VERSION = "1.67.0";
*/ */
export async function activate( export async function activate(
ctx: ExtensionContext, ctx: ExtensionContext,
): Promise<CodeQLExtensionInterface | Record<string, never>> { ): Promise<CodeQLExtensionInterface | undefined> {
void extLogger.log(`Starting ${extensionId} extension`); void extLogger.log(`Starting ${extensionId} extension`);
if (extension === undefined) { if (extension === undefined) {
throw new Error(`Can't find extension ${extensionId}`); throw new Error(`Can't find extension ${extensionId}`);
@@ -379,9 +379,11 @@ export async function activate(
}, },
); );
variantAnalysisViewSerializer.onExtensionLoaded( if (codeQlExtension !== undefined) {
codeQlExtension.variantAnalysisManager, variantAnalysisViewSerializer.onExtensionLoaded(
); codeQlExtension.variantAnalysisManager,
);
}
return codeQlExtension; return codeQlExtension;
} }
@@ -571,7 +573,7 @@ async function installOrUpdateThenTryActivate(
distributionManager: DistributionManager, distributionManager: DistributionManager,
distributionConfigListener: DistributionConfigListener, distributionConfigListener: DistributionConfigListener,
config: DistributionUpdateConfig, config: DistributionUpdateConfig,
): Promise<CodeQLExtensionInterface | Record<string, never>> { ): Promise<CodeQLExtensionInterface | undefined> {
await installOrUpdateDistribution(ctx, app, distributionManager, config); await installOrUpdateDistribution(ctx, app, distributionManager, config);
try { try {
@@ -585,20 +587,19 @@ async function installOrUpdateThenTryActivate(
// Display the warnings even if the extension has already activated. // Display the warnings even if the extension has already activated.
const distributionResult = const distributionResult =
await getDistributionDisplayingDistributionWarnings(distributionManager); await getDistributionDisplayingDistributionWarnings(distributionManager);
let extensionInterface: CodeQLExtensionInterface | Record<string, never> = {};
if ( if (
!beganMainExtensionActivation && !beganMainExtensionActivation &&
distributionResult.kind !== FindDistributionResultKind.NoDistribution distributionResult.kind !== FindDistributionResultKind.NoDistribution
) { ) {
extensionInterface = await activateWithInstalledDistribution( return await activateWithInstalledDistribution(
ctx, ctx,
app, app,
distributionManager, distributionManager,
distributionConfigListener, distributionConfigListener,
); );
} else if ( }
distributionResult.kind === FindDistributionResultKind.NoDistribution
) { if (distributionResult.kind === FindDistributionResultKind.NoDistribution) {
registerErrorStubs([checkForUpdatesCommand], (command) => async () => { registerErrorStubs([checkForUpdatesCommand], (command) => async () => {
const installActionName = "Install CodeQL CLI"; const installActionName = "Install CodeQL CLI";
const chosenAction = await showAndLogErrorMessage( const chosenAction = await showAndLogErrorMessage(
@@ -622,7 +623,7 @@ async function installOrUpdateThenTryActivate(
} }
}); });
} }
return extensionInterface; return undefined;
} }
const PACK_GLOBS = [ const PACK_GLOBS = [

View File

@@ -1,6 +1,5 @@
import { commands, extensions, window } from "vscode"; import { commands, window } from "vscode";
import { CodeQLExtensionInterface } from "../../../../src/extension";
import { readJson } from "fs-extra"; import { readJson } from "fs-extra";
import * as path from "path"; import * as path from "path";
import { import {
@@ -15,19 +14,15 @@ import { DbListKind } from "../../../../src/databases/db-item";
import { createDbTreeViewItemSystemDefinedList } from "../../../../src/databases/ui/db-tree-view-item"; import { createDbTreeViewItemSystemDefinedList } from "../../../../src/databases/ui/db-tree-view-item";
import { createRemoteSystemDefinedListDbItem } from "../../../factories/db-item-factories"; import { createRemoteSystemDefinedListDbItem } from "../../../factories/db-item-factories";
import { DbConfigStore } from "../../../../src/databases/config/db-config-store"; import { DbConfigStore } from "../../../../src/databases/config/db-config-store";
import { getActivatedExtension } from "../../global.helper";
jest.setTimeout(60_000); jest.setTimeout(60_000);
describe("Db panel UI commands", () => { describe("Db panel UI commands", () => {
let extension: CodeQLExtensionInterface | Record<string, never>;
let storagePath: string; let storagePath: string;
beforeEach(async () => { beforeEach(async () => {
extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
storagePath = storagePath =
extension.ctx.storageUri?.fsPath || extension.ctx.globalStorageUri.fsPath; extension.ctx.storageUri?.fsPath || extension.ctx.globalStorageUri.fsPath;

View File

@@ -1,14 +1,12 @@
import { import {
commands, commands,
env, env,
extensions,
TextDocument, TextDocument,
TextEditor, TextEditor,
Uri, Uri,
window, window,
workspace, workspace,
} from "vscode"; } from "vscode";
import { CodeQLExtensionInterface } from "../../../../src/extension";
import { extLogger } from "../../../../src/common"; import { extLogger } from "../../../../src/common";
import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client"; import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client";
import * as ghActionsApiClient from "../../../../src/variant-analysis/gh-api/gh-actions-api-client"; import * as ghActionsApiClient from "../../../../src/variant-analysis/gh-api/gh-actions-api-client";
@@ -20,7 +18,7 @@ import { Response } from "node-fetch";
import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager"; import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager";
import { CodeQLCliServer } from "../../../../src/cli"; import { CodeQLCliServer } from "../../../../src/cli";
import { storagePath } from "../../global.helper"; import { getActivatedExtension, storagePath } from "../../global.helper";
import { VariantAnalysisResultsManager } from "../../../../src/variant-analysis/variant-analysis-results-manager"; import { VariantAnalysisResultsManager } from "../../../../src/variant-analysis/variant-analysis-results-manager";
import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis"; import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis";
import * as VariantAnalysisModule from "../../../../src/variant-analysis/shared/variant-analysis"; import * as VariantAnalysisModule from "../../../../src/variant-analysis/shared/variant-analysis";
@@ -67,11 +65,7 @@ describe("Variant Analysis Manager", () => {
scannedRepos, scannedRepos,
}); });
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
const cli = mockedObject<CodeQLCliServer>({}); const cli = mockedObject<CodeQLCliServer>({});
app = new ExtensionApp(extension.ctx); app = new ExtensionApp(extension.ctx);
const dbManager = new DbManager(app, new DbConfigStore(app)); const dbManager = new DbManager(app, new DbConfigStore(app));

View File

@@ -1,5 +1,4 @@
import { commands, extensions } from "vscode"; import { commands } from "vscode";
import { CodeQLExtensionInterface } from "../../../../src/extension";
import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client"; import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client";
import { VariantAnalysisMonitor } from "../../../../src/variant-analysis/variant-analysis-monitor"; import { VariantAnalysisMonitor } from "../../../../src/variant-analysis/variant-analysis-monitor";
@@ -25,11 +24,11 @@ import {
import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis"; import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis";
import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager"; import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant-analysis-manager";
import { testCredentialsWithStub } from "../../../factories/authentication"; import { testCredentialsWithStub } from "../../../factories/authentication";
import { getActivatedExtension } from "../../global.helper";
jest.setTimeout(60_000); jest.setTimeout(60_000);
describe("Variant Analysis Monitor", () => { describe("Variant Analysis Monitor", () => {
let extension: CodeQLExtensionInterface | Record<string, never>;
let mockGetVariantAnalysis: jest.SpiedFunction< let mockGetVariantAnalysis: jest.SpiedFunction<
typeof ghApiClient.getVariantAnalysis typeof ghApiClient.getVariantAnalysis
>; >;
@@ -48,11 +47,7 @@ describe("Variant Analysis Monitor", () => {
shouldCancelMonitor = jest.fn(); shouldCancelMonitor = jest.fn();
extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
variantAnalysisMonitor = new VariantAnalysisMonitor(shouldCancelMonitor); variantAnalysisMonitor = new VariantAnalysisMonitor(shouldCancelMonitor);
variantAnalysisMonitor.onVariantAnalysisChange(onVariantAnalysisChangeSpy); variantAnalysisMonitor.onVariantAnalysisChange(onVariantAnalysisChangeSpy);

View File

@@ -1,14 +1,19 @@
import { join } from "path"; import { join } from "path";
import { extensions, CancellationToken, Uri, window } from "vscode"; import { CancellationToken, Uri, window } from "vscode";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { CodeQLCliServer } from "../../../src/cli"; import { CodeQLCliServer } from "../../../src/cli";
import { DatabaseManager } from "../../../src/local-databases"; import { DatabaseManager } from "../../../src/local-databases";
import { import {
importArchiveDatabase, importArchiveDatabase,
promptImportInternetDatabase, promptImportInternetDatabase,
} from "../../../src/databaseFetcher"; } from "../../../src/databaseFetcher";
import { cleanDatabases, dbLoc, DB_URL, storagePath } from "../global.helper"; import {
cleanDatabases,
dbLoc,
DB_URL,
getActivatedExtension,
storagePath,
} from "../global.helper";
import { createMockCommandManager } from "../../__mocks__/commandsMock"; import { createMockCommandManager } from "../../__mocks__/commandsMock";
jest.setTimeout(60_000); jest.setTimeout(60_000);
@@ -30,11 +35,7 @@ describe("DatabaseFetcher", () => {
jest.spyOn(window, "showErrorMessage").mockResolvedValue(undefined); jest.spyOn(window, "showErrorMessage").mockResolvedValue(undefined);
jest.spyOn(window, "showInformationMessage").mockResolvedValue(undefined); jest.spyOn(window, "showInformationMessage").mockResolvedValue(undefined);
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("databaseManager" in extension) { if ("databaseManager" in extension) {
databaseManager = extension.databaseManager; databaseManager = extension.databaseManager;
} else { } else {

View File

@@ -1,9 +1,8 @@
import { join } from "path"; import { join } from "path";
import { extensions } from "vscode";
import { CodeQLCliServer } from "../../../src/cli"; import { CodeQLCliServer } from "../../../src/cli";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { tryGetQueryMetadata } from "../../../src/helpers"; import { tryGetQueryMetadata } from "../../../src/helpers";
import { getActivatedExtension } from "../global.helper";
// up to 3 minutes per test // up to 3 minutes per test
jest.setTimeout(3 * 60 * 1000); jest.setTimeout(3 * 60 * 1000);
@@ -14,11 +13,7 @@ describe("helpers (with CLI)", () => {
let cli: CodeQLCliServer; let cli: CodeQLCliServer;
beforeEach(async () => { beforeEach(async () => {
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("cliServer" in extension) { if ("cliServer" in extension) {
cli = extension.cliServer; cli = extension.cliServer;
} else { } else {

View File

@@ -7,12 +7,11 @@ import * as messages from "../../../src/pure/legacy-messages";
import * as qsClient from "../../../src/legacy-query-server/queryserver-client"; import * as qsClient from "../../../src/legacy-query-server/queryserver-client";
import * as cli from "../../../src/cli"; import * as cli from "../../../src/cli";
import { CellValue } from "../../../src/pure/bqrs-cli-types"; import { CellValue } from "../../../src/pure/bqrs-cli-types";
import { extensions } from "vscode";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { describeWithCodeQL } from "../cli"; import { describeWithCodeQL } from "../cli";
import { QueryServerClient } from "../../../src/legacy-query-server/queryserver-client"; import { QueryServerClient } from "../../../src/legacy-query-server/queryserver-client";
import { extLogger, ProgressReporter } from "../../../src/common"; import { extLogger, ProgressReporter } from "../../../src/common";
import { createMockApp } from "../../__mocks__/appMock"; import { createMockApp } from "../../__mocks__/appMock";
import { getActivatedExtension } from "../global.helper";
const baseDir = join(__dirname, "../../../test/data"); const baseDir = join(__dirname, "../../../test/data");
@@ -112,11 +111,7 @@ describeWithCodeQL()("using the legacy query server", () => {
let cliServer: cli.CodeQLCliServer; let cliServer: cli.CodeQLCliServer;
beforeAll(async () => { beforeAll(async () => {
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("cliServer" in extension) { if ("cliServer" in extension) {
cliServer = extension.cliServer; cliServer = extension.cliServer;
cliServer.quiet = true; cliServer.quiet = true;

View File

@@ -5,13 +5,17 @@ import * as messages from "../../../src/pure/new-messages";
import * as qsClient from "../../../src/query-server/queryserver-client"; import * as qsClient from "../../../src/query-server/queryserver-client";
import * as cli from "../../../src/cli"; import * as cli from "../../../src/cli";
import { CellValue } from "../../../src/pure/bqrs-cli-types"; import { CellValue } from "../../../src/pure/bqrs-cli-types";
import { extensions, Uri } from "vscode"; import { Uri } from "vscode";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { describeWithCodeQL } from "../cli"; import { describeWithCodeQL } from "../cli";
import { QueryServerClient } from "../../../src/query-server/queryserver-client"; import { QueryServerClient } from "../../../src/query-server/queryserver-client";
import { extLogger, ProgressReporter } from "../../../src/common"; import { extLogger, ProgressReporter } from "../../../src/common";
import { QueryResultType } from "../../../src/pure/new-messages"; import { QueryResultType } from "../../../src/pure/new-messages";
import { cleanDatabases, dbLoc, storagePath } from "../global.helper"; import {
cleanDatabases,
dbLoc,
getActivatedExtension,
storagePath,
} from "../global.helper";
import { importArchiveDatabase } from "../../../src/databaseFetcher"; import { importArchiveDatabase } from "../../../src/databaseFetcher";
import { createMockCommandManager } from "../../__mocks__/commandsMock"; import { createMockCommandManager } from "../../__mocks__/commandsMock";
@@ -110,11 +114,7 @@ describeWithCodeQL()("using the new query server", () => {
let supportNewQueryServer = true; let supportNewQueryServer = true;
beforeAll(async () => { beforeAll(async () => {
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("cliServer" in extension && "databaseManager" in extension) { if ("cliServer" in extension && "databaseManager" in extension) {
cliServer = extension.cliServer; cliServer = extension.cliServer;

View File

@@ -1,8 +1,7 @@
import { extensions, window } from "vscode"; import { window } from "vscode";
import { join } from "path"; import { join } from "path";
import { CodeQLCliServer } from "../../../src/cli"; import { CodeQLCliServer } from "../../../src/cli";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { getErrorMessage } from "../../../src/pure/helpers-pure"; import { getErrorMessage } from "../../../src/pure/helpers-pure";
import * as helpers from "../../../src/helpers"; import * as helpers from "../../../src/helpers";
@@ -11,6 +10,7 @@ import {
handleInstallPackDependencies, handleInstallPackDependencies,
} from "../../../src/packaging"; } from "../../../src/packaging";
import { mockedQuickPickItem } from "../utils/mocking.helpers"; import { mockedQuickPickItem } from "../utils/mocking.helpers";
import { getActivatedExtension } from "../global.helper";
// up to 3 minutes per test // up to 3 minutes per test
jest.setTimeout(3 * 60 * 1000); jest.setTimeout(3 * 60 * 1000);
@@ -41,11 +41,7 @@ describe("Packaging commands", () => {
.spyOn(helpers, "showAndLogInformationMessage") .spyOn(helpers, "showAndLogInformationMessage")
.mockResolvedValue(undefined); .mockResolvedValue(undefined);
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("cliServer" in extension) { if ("cliServer" in extension) {
cli = extension.cliServer; cli = extension.cliServer;
} else { } else {

View File

@@ -1,10 +1,4 @@
import { import { CancellationToken, commands, ExtensionContext, Uri } from "vscode";
CancellationToken,
commands,
ExtensionContext,
extensions,
Uri,
} from "vscode";
import { join, dirname } from "path"; import { join, dirname } from "path";
import { import {
pathExistsSync, pathExistsSync,
@@ -16,8 +10,12 @@ import {
import { load, dump } from "js-yaml"; import { load, dump } from "js-yaml";
import { DatabaseItem, DatabaseManager } from "../../../src/local-databases"; import { DatabaseItem, DatabaseManager } from "../../../src/local-databases";
import { CodeQLExtensionInterface } from "../../../src/extension"; import {
import { cleanDatabases, dbLoc, storagePath } from "../global.helper"; cleanDatabases,
dbLoc,
getActivatedExtension,
storagePath,
} from "../global.helper";
import { importArchiveDatabase } from "../../../src/databaseFetcher"; import { importArchiveDatabase } from "../../../src/databaseFetcher";
import { CliVersionConstraint, CodeQLCliServer } from "../../../src/cli"; import { CliVersionConstraint, CodeQLCliServer } from "../../../src/cli";
import { describeWithCodeQL } from "../cli"; import { describeWithCodeQL } from "../cli";
@@ -48,11 +46,7 @@ describeWithCodeQL()("Queries", () => {
let qlFile: string; let qlFile: string;
beforeEach(async () => { beforeEach(async () => {
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("databaseManager" in extension) { if ("databaseManager" in extension) {
databaseManager = extension.databaseManager; databaseManager = extension.databaseManager;
cli = extension.cliServer; cli = extension.cliServer;

View File

@@ -1,9 +1,8 @@
import { authentication, extensions, Uri } from "vscode"; import { authentication, Uri } from "vscode";
import { join } from "path"; import { join } from "path";
import { SemVer } from "semver"; import { SemVer } from "semver";
import { CodeQLCliServer, QueryInfoByLanguage } from "../../../src/cli"; import { CodeQLCliServer, QueryInfoByLanguage } from "../../../src/cli";
import { CodeQLExtensionInterface } from "../../../src/extension";
import { itWithCodeQL } from "../cli"; import { itWithCodeQL } from "../cli";
import { import {
getOnDiskWorkspaceFolders, getOnDiskWorkspaceFolders,
@@ -13,6 +12,7 @@ import {
import { resolveQueries } from "../../../src/contextual/queryResolver"; import { resolveQueries } from "../../../src/contextual/queryResolver";
import { KeyType } from "../../../src/contextual/keyType"; import { KeyType } from "../../../src/contextual/keyType";
import { faker } from "@faker-js/faker"; import { faker } from "@faker-js/faker";
import { getActivatedExtension } from "../global.helper";
jest.setTimeout(60_000); jest.setTimeout(60_000);
@@ -24,11 +24,7 @@ describe("Use cli", () => {
let supportedLanguages: string[]; let supportedLanguages: string[];
beforeEach(async () => { beforeEach(async () => {
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
if ("cliServer" in extension) { if ("cliServer" in extension) {
cli = extension.cliServer; cli = extension.cliServer;
supportedLanguages = await cli.getSupportedLanguages(); supportedLanguages = await cli.getSupportedLanguages();

View File

@@ -1,11 +1,4 @@
import { import { CancellationTokenSource, commands, Uri, window } from "vscode";
CancellationTokenSource,
commands,
extensions,
Uri,
window,
} from "vscode";
import { CodeQLExtensionInterface } from "../../../../src/extension";
import { extLogger } from "../../../../src/common"; import { extLogger } from "../../../../src/common";
import { setRemoteControllerRepo } from "../../../../src/config"; import { setRemoteControllerRepo } from "../../../../src/config";
import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client"; import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client";
@@ -15,6 +8,7 @@ import { VariantAnalysisManager } from "../../../../src/variant-analysis/variant
import { CliVersionConstraint, CodeQLCliServer } from "../../../../src/cli"; import { CliVersionConstraint, CodeQLCliServer } from "../../../../src/cli";
import { import {
fixWorkspaceReferences, fixWorkspaceReferences,
getActivatedExtension,
restoreWorkspaceReferences, restoreWorkspaceReferences,
storagePath, storagePath,
} from "../../global.helper"; } from "../../global.helper";
@@ -48,11 +42,7 @@ describe("Variant Analysis Manager", () => {
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
const extension = await extensions const extension = await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
cli = extension.cliServer; cli = extension.cliServer;
const app = new ExtensionApp(extension.ctx); const app = new ExtensionApp(extension.ctx);
const dbManager = new DbManager(app, new DbConfigStore(app)); const dbManager = new DbManager(app, new DbConfigStore(app));

View File

@@ -3,16 +3,15 @@ import { resolve } from "path";
import { import {
authentication, authentication,
commands, commands,
extensions,
TextDocument, TextDocument,
window, window,
workspace, workspace,
} from "vscode"; } from "vscode";
import { CodeQLExtensionInterface } from "../../../../src/extension";
import { MockGitHubApiServer } from "../../../../src/mocks/mock-gh-api-server"; import { MockGitHubApiServer } from "../../../../src/mocks/mock-gh-api-server";
import { mockedQuickPickItem } from "../../utils/mocking.helpers"; import { mockedQuickPickItem } from "../../utils/mocking.helpers";
import { setRemoteControllerRepo } from "../../../../src/config"; import { setRemoteControllerRepo } from "../../../../src/config";
import { getActivatedExtension } from "../../global.helper";
jest.setTimeout(30_000); jest.setTimeout(30_000);
@@ -55,11 +54,7 @@ describe("Variant Analysis Submission Integration", () => {
.spyOn(window, "showErrorMessage") .spyOn(window, "showErrorMessage")
.mockResolvedValue(undefined); .mockResolvedValue(undefined);
await extensions await getActivatedExtension();
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
"GitHub.vscode-codeql",
)!
.activate();
}); });
describe("Successful scenario", () => { describe("Successful scenario", () => {

View File

@@ -1,10 +1,11 @@
import { join } from "path"; import { join } from "path";
import { load, dump } from "js-yaml"; import { load, dump } from "js-yaml";
import { realpathSync, readFileSync, writeFileSync } from "fs-extra"; import { realpathSync, readFileSync, writeFileSync } from "fs-extra";
import { commands } from "vscode"; import { commands, extensions } from "vscode";
import { DatabaseManager } from "../../src/local-databases"; import { DatabaseManager } from "../../src/local-databases";
import { CodeQLCliServer } from "../../src/cli"; import { CodeQLCliServer } from "../../src/cli";
import { removeWorkspaceRefs } from "../../src/variant-analysis/run-remote-query"; import { removeWorkspaceRefs } from "../../src/variant-analysis/run-remote-query";
import { CodeQLExtensionInterface } from "../../src/extension";
// This file contains helpers shared between tests that work with an activated extension. // This file contains helpers shared between tests that work with an activated extension.
@@ -23,6 +24,16 @@ export function setStoragePath(path: string) {
storagePath = path; storagePath = path;
} }
export async function getActivatedExtension(): Promise<CodeQLExtensionInterface> {
const extension = await extensions
.getExtension<CodeQLExtensionInterface | undefined>("GitHub.vscode-codeql")
?.activate();
if (extension === undefined) {
throw new Error("Unable to active CodeQL extension");
}
return extension;
}
export async function cleanDatabases(databaseManager: DatabaseManager) { export async function cleanDatabases(databaseManager: DatabaseManager) {
for (const item of databaseManager.databaseItems) { for (const item of databaseManager.databaseItems) {
await commands.executeCommand("codeQLDatabases.removeDatabase", item); await commands.executeCommand("codeQLDatabases.removeDatabase", item);

View File

@@ -1,9 +1,13 @@
import { CUSTOM_CODEQL_PATH_SETTING } from "../../src/config"; import { CUSTOM_CODEQL_PATH_SETTING } from "../../src/config";
import { ConfigurationTarget, env, extensions } from "vscode"; import { ConfigurationTarget, env } from "vscode";
import { beforeEachAction as testConfigBeforeEachAction } from "./test-config"; import { beforeEachAction as testConfigBeforeEachAction } from "./test-config";
import * as tmp from "tmp"; import * as tmp from "tmp";
import { realpathSync } from "fs-extra"; import { realpathSync } from "fs-extra";
import { setStoragePath, storagePath } from "./global.helper"; import {
getActivatedExtension,
setStoragePath,
storagePath,
} from "./global.helper";
if (process.env.CI) { if (process.env.CI) {
jest.retryTimes(3, { jest.retryTimes(3, {
@@ -35,7 +39,7 @@ export async function beforeAllAction() {
removeStorage = dir.removeCallback; removeStorage = dir.removeCallback;
// Activate the extension // Activate the extension
await extensions.getExtension("GitHub.vscode-codeql")?.activate(); await getActivatedExtension();
} }
export async function beforeEachAction() { export async function beforeEachAction() {