Skip to content

Commit a3f2b7b

Browse files
Merge pull request github#2431 from github/robertbrignull/app-workspace
Add workspace folders to App interface
2 parents 6371356 + a7f6401 commit a3f2b7b

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

extensions/ql-vscode/src/common/app.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import { AppEventEmitter } from "./events";
44
import { Logger } from "./logging";
55
import { Memento } from "./memento";
66
import { AppCommandManager } from "./commands";
7+
import type {
8+
WorkspaceFolder,
9+
Event,
10+
WorkspaceFoldersChangeEvent,
11+
} from "vscode";
712

813
export interface App {
914
createEventEmitter<T>(): AppEventEmitter<T>;
@@ -14,6 +19,8 @@ export interface App {
1419
readonly globalStoragePath: string;
1520
readonly workspaceStoragePath?: string;
1621
readonly workspaceState: Memento;
22+
readonly workspaceFolders: readonly WorkspaceFolder[] | undefined;
23+
readonly onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>;
1724
readonly credentials: Credentials;
1825
readonly commands: AppCommandManager;
1926
}

extensions/ql-vscode/src/common/vscode/vscode-app.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ export class ExtensionApp implements App {
3939
return this.extensionContext.workspaceState;
4040
}
4141

42+
public get workspaceFolders(): readonly vscode.WorkspaceFolder[] | undefined {
43+
return vscode.workspace.workspaceFolders;
44+
}
45+
46+
public get onDidChangeWorkspaceFolders(): vscode.Event<vscode.WorkspaceFoldersChangeEvent> {
47+
return vscode.workspace.onDidChangeWorkspaceFolders;
48+
}
49+
4250
public get subscriptions(): Disposable[] {
4351
return this.extensionContext.subscriptions;
4452
}

extensions/ql-vscode/test/__mocks__/appMock.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@ import { testCredentialsWithStub } from "../factories/authentication";
88
import { Credentials } from "../../src/common/authentication";
99
import { AppCommandManager } from "../../src/common/commands";
1010
import { createMockCommandManager } from "./commandsMock";
11+
import type {
12+
Event,
13+
WorkspaceFolder,
14+
WorkspaceFoldersChangeEvent,
15+
} from "vscode";
1116

1217
export function createMockApp({
1318
extensionPath = "/mock/extension/path",
1419
workspaceStoragePath = "/mock/workspace/storage/path",
1520
globalStoragePath = "/mock/global/storage/path",
1621
createEventEmitter = <T>() => new MockAppEventEmitter<T>(),
1722
workspaceState = createMockMemento(),
23+
workspaceFolders = [],
24+
onDidChangeWorkspaceFolders = jest.fn(),
1825
credentials = testCredentialsWithStub(),
1926
commands = createMockCommandManager(),
2027
}: {
@@ -23,6 +30,8 @@ export function createMockApp({
2330
globalStoragePath?: string;
2431
createEventEmitter?: <T>() => AppEventEmitter<T>;
2532
workspaceState?: Memento;
33+
workspaceFolders?: readonly WorkspaceFolder[] | undefined;
34+
onDidChangeWorkspaceFolders?: Event<WorkspaceFoldersChangeEvent>;
2635
credentials?: Credentials;
2736
commands?: AppCommandManager;
2837
}): App {
@@ -34,6 +43,8 @@ export function createMockApp({
3443
workspaceStoragePath,
3544
globalStoragePath,
3645
workspaceState,
46+
workspaceFolders,
47+
onDidChangeWorkspaceFolders,
3748
createEventEmitter,
3849
credentials,
3950
commands,

0 commit comments

Comments
 (0)