diff --git a/extensions/ql-vscode/src/common/app.ts b/extensions/ql-vscode/src/common/app.ts index 278ea2b9d..2e749c018 100644 --- a/extensions/ql-vscode/src/common/app.ts +++ b/extensions/ql-vscode/src/common/app.ts @@ -7,7 +7,6 @@ import { AppCommandManager } from "./commands"; export interface App { createEventEmitter(): AppEventEmitter; - executeCommand(command: string, ...args: any): Thenable; readonly mode: AppMode; readonly logger: Logger; readonly subscriptions: Disposable[]; diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index a41a57b8f..aa7792624 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -36,6 +36,10 @@ export type SingleSelectionCommandFunction = ( // See https://code.visualstudio.com/api/references/commands export type BuiltInVsCodeCommands = { "markdown.showPreviewToSide": (uri: Uri) => Promise; + setContext: ( + key: `${"codeql" | "codeQL"}${string}`, + value: unknown, + ) => Promise; "workbench.action.reloadWindow": () => Promise; }; diff --git a/extensions/ql-vscode/src/common/vscode/vscode-app.ts b/extensions/ql-vscode/src/common/vscode/vscode-app.ts index 54032a8b1..a8f9da973 100644 --- a/extensions/ql-vscode/src/common/vscode/vscode-app.ts +++ b/extensions/ql-vscode/src/common/vscode/vscode-app.ts @@ -61,8 +61,4 @@ export class ExtensionApp implements App { public createEventEmitter(): AppEventEmitter { return new VSCodeAppEventEmitter(); } - - public executeCommand(command: string, ...args: any): Thenable { - return vscode.commands.executeCommand(command, ...args); - } } diff --git a/extensions/ql-vscode/src/databases/config/db-config-store.ts b/extensions/ql-vscode/src/databases/config/db-config-store.ts index 54a3c549d..3013d164f 100644 --- a/extensions/ql-vscode/src/databases/config/db-config-store.ts +++ b/extensions/ql-vscode/src/databases/config/db-config-store.ts @@ -391,14 +391,14 @@ export class DbConfigStore extends DisposableObject { if (this.configErrors.length === 0) { this.config = newConfig; - await this.app.executeCommand( + await this.app.commands.execute( "setContext", "codeQLVariantAnalysisRepositories.configError", false, ); } else { this.config = undefined; - await this.app.executeCommand( + await this.app.commands.execute( "setContext", "codeQLVariantAnalysisRepositories.configError", true, @@ -426,14 +426,14 @@ export class DbConfigStore extends DisposableObject { if (this.configErrors.length === 0) { this.config = newConfig; - void this.app.executeCommand( + void this.app.commands.execute( "setContext", "codeQLVariantAnalysisRepositories.configError", false, ); } else { this.config = undefined; - void this.app.executeCommand( + void this.app.commands.execute( "setContext", "codeQLVariantAnalysisRepositories.configError", true, diff --git a/extensions/ql-vscode/test/__mocks__/appMock.ts b/extensions/ql-vscode/test/__mocks__/appMock.ts index 6a4b05ba8..1b6d9da9d 100644 --- a/extensions/ql-vscode/test/__mocks__/appMock.ts +++ b/extensions/ql-vscode/test/__mocks__/appMock.ts @@ -14,7 +14,6 @@ export function createMockApp({ workspaceStoragePath = "/mock/workspace/storage/path", globalStoragePath = "/mock/global/storage/path", createEventEmitter = () => new MockAppEventEmitter(), - executeCommand = jest.fn(() => Promise.resolve()), workspaceState = createMockMemento(), credentials = testCredentialsWithStub(), commands = createMockCommandManager(), @@ -23,7 +22,6 @@ export function createMockApp({ workspaceStoragePath?: string; globalStoragePath?: string; createEventEmitter?: () => AppEventEmitter; - executeCommand?: () => Promise; workspaceState?: Memento; credentials?: Credentials; commands?: AppCommandManager; @@ -37,7 +35,6 @@ export function createMockApp({ globalStoragePath, workspaceState, createEventEmitter, - executeCommand, credentials, commands, }; diff --git a/extensions/ql-vscode/test/unit-tests/databases/config/db-config-store.test.ts b/extensions/ql-vscode/test/unit-tests/databases/config/db-config-store.test.ts index 7e0af0d86..ca4b7ead6 100644 --- a/extensions/ql-vscode/test/unit-tests/databases/config/db-config-store.test.ts +++ b/extensions/ql-vscode/test/unit-tests/databases/config/db-config-store.test.ts @@ -19,6 +19,7 @@ import { createRemoteUserDefinedListDbItem, } from "../../../factories/db-item-factories"; import { createMockApp } from "../../../__mocks__/appMock"; +import { createMockCommandManager } from "../../../__mocks__/commandsMock"; describe("db config store", () => { const extensionPath = join(__dirname, "../../../.."); @@ -136,14 +137,16 @@ describe("db config store", () => { it("should set codeQLVariantAnalysisRepositories.configError to true when config has error", async () => { const testDataStoragePathInvalid = join(__dirname, "data", "invalid"); + const executeCommand = jest.fn(); const app = createMockApp({ extensionPath, workspaceStoragePath: testDataStoragePathInvalid, + commands: createMockCommandManager({ executeCommand }), }); const configStore = new DbConfigStore(app, false); await configStore.initialize(); - expect(app.executeCommand).toBeCalledWith( + expect(executeCommand).toBeCalledWith( "setContext", "codeQLVariantAnalysisRepositories.configError", true, @@ -152,14 +155,16 @@ describe("db config store", () => { }); it("should set codeQLVariantAnalysisRepositories.configError to false when config is valid", async () => { + const executeCommand = jest.fn(); const app = createMockApp({ extensionPath, workspaceStoragePath: testDataStoragePath, + commands: createMockCommandManager({ executeCommand }), }); const configStore = new DbConfigStore(app, false); await configStore.initialize(); - expect(app.executeCommand).toBeCalledWith( + expect(executeCommand).toBeCalledWith( "setContext", "codeQLVariantAnalysisRepositories.configError", false,