Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions extensions/ql-vscode/src/common/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,6 @@ import { AppEventEmitter } from "./events";
import { Logger } from "./logging";
import { Memento } from "./memento";
import { AppCommandManager } from "./commands";
import type {
WorkspaceFolder,
Event,
WorkspaceFoldersChangeEvent,
} from "vscode";

export interface App {
createEventEmitter<T>(): AppEventEmitter<T>;
Expand All @@ -19,8 +14,6 @@ export interface App {
readonly globalStoragePath: string;
readonly workspaceStoragePath?: string;
readonly workspaceState: Memento;
readonly workspaceFolders: readonly WorkspaceFolder[] | undefined;
readonly onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>;
readonly credentials: Credentials;
readonly commands: AppCommandManager;
readonly environment: EnvironmentContext;
Expand Down
8 changes: 0 additions & 8 deletions extensions/ql-vscode/src/common/vscode/vscode-app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,6 @@ export class ExtensionApp implements App {
return this.extensionContext.workspaceState;
}

public get workspaceFolders(): readonly vscode.WorkspaceFolder[] | undefined {
return vscode.workspace.workspaceFolders;
}

public get onDidChangeWorkspaceFolders(): vscode.Event<vscode.WorkspaceFoldersChangeEvent> {
return vscode.workspace.onDidChangeWorkspaceFolders;
}

public get subscriptions(): Disposable[] {
return this.extensionContext.subscriptions;
}
Expand Down
2 changes: 1 addition & 1 deletion extensions/ql-vscode/src/queries-panel/queries-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class QueriesModule extends DisposableObject {
}
void extLogger.log("Initializing queries panel.");

const queryDiscovery = new QueryDiscovery(app, cliServer);
const queryDiscovery = new QueryDiscovery(app.environment, cliServer);
this.push(queryDiscovery);
void queryDiscovery.refresh();

Expand Down
19 changes: 13 additions & 6 deletions extensions/ql-vscode/src/queries-panel/query-discovery.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import { dirname, basename, normalize, relative } from "path";
import { Discovery } from "../common/discovery";
import { CodeQLCliServer } from "../codeql-cli/cli";
import { Event, RelativePattern, Uri, WorkspaceFolder } from "vscode";
import {
Event,
EventEmitter,
RelativePattern,
Uri,
WorkspaceFolder,
workspace,
} from "vscode";
import { MultiFileSystemWatcher } from "../common/vscode/multi-file-system-watcher";
import { App } from "../common/app";
import { EnvironmentContext } from "../common/app";
import { FileTreeDirectory, FileTreeLeaf } from "../common/file-tree-nodes";
import { getOnDiskWorkspaceFoldersObjects } from "../helpers";
import { AppEventEmitter } from "../common/events";
Expand Down Expand Up @@ -42,13 +49,13 @@ export class QueryDiscovery
);

constructor(
private readonly app: App,
private readonly env: EnvironmentContext,
private readonly cliServer: CodeQLCliServer,
) {
super("Query Discovery", extLogger);

this.onDidChangeQueriesEmitter = this.push(app.createEventEmitter<void>());
this.push(app.onDidChangeWorkspaceFolders(this.refresh.bind(this)));
this.onDidChangeQueriesEmitter = this.push(new EventEmitter<void>());
this.push(workspace.onDidChangeWorkspaceFolders(this.refresh.bind(this)));
this.push(this.watcher.onDidChange(this.refresh.bind(this)));
}

Expand Down Expand Up @@ -130,7 +137,7 @@ export class QueryDiscovery
const rootDirectory = new FileTreeDirectory<string>(
fullPath,
name,
this.app.environment,
this.env,
);
for (const queryPath of resolvedQueries) {
const relativePath = normalize(relative(fullPath, queryPath));
Expand Down
11 changes: 0 additions & 11 deletions extensions/ql-vscode/test/__mocks__/appMock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,13 @@ import { testCredentialsWithStub } from "../factories/authentication";
import { Credentials } from "../../src/common/authentication";
import { AppCommandManager } from "../../src/common/commands";
import { createMockCommandManager } from "./commandsMock";
import type {
Event,
WorkspaceFolder,
WorkspaceFoldersChangeEvent,
} from "vscode";

export function createMockApp({
extensionPath = "/mock/extension/path",
workspaceStoragePath = "/mock/workspace/storage/path",
globalStoragePath = "/mock/global/storage/path",
createEventEmitter = <T>() => new MockAppEventEmitter<T>(),
workspaceState = createMockMemento(),
workspaceFolders = [],
onDidChangeWorkspaceFolders = jest.fn(),
credentials = testCredentialsWithStub(),
commands = createMockCommandManager(),
environment = createMockEnvironmentContext(),
Expand All @@ -31,8 +24,6 @@ export function createMockApp({
globalStoragePath?: string;
createEventEmitter?: <T>() => AppEventEmitter<T>;
workspaceState?: Memento;
workspaceFolders?: readonly WorkspaceFolder[] | undefined;
onDidChangeWorkspaceFolders?: Event<WorkspaceFoldersChangeEvent>;
credentials?: Credentials;
commands?: AppCommandManager;
environment?: EnvironmentContext;
Expand All @@ -45,8 +36,6 @@ export function createMockApp({
workspaceStoragePath,
globalStoragePath,
workspaceState,
workspaceFolders,
onDidChangeWorkspaceFolders,
createEventEmitter,
credentials,
commands,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from "vscode";
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
import { QueryDiscovery } from "../../../../src/queries-panel/query-discovery";
import { createMockApp } from "../../../__mocks__/appMock";
import { createMockEnvironmentContext } from "../../../__mocks__/appMock";
import { mockedObject } from "../../utils/mocking.helpers";
import { basename, join, sep } from "path";

Expand All @@ -23,7 +23,7 @@ describe("QueryDiscovery", () => {
resolveQueries,
});

const discovery = new QueryDiscovery(createMockApp({}), cli);
const discovery = new QueryDiscovery(createMockEnvironmentContext(), cli);
await discovery.refresh();
const queries = discovery.queries;

Expand All @@ -43,7 +43,7 @@ describe("QueryDiscovery", () => {
]),
});

const discovery = new QueryDiscovery(createMockApp({}), cli);
const discovery = new QueryDiscovery(createMockEnvironmentContext(), cli);
await discovery.refresh();
const queries = discovery.queries;
expect(queries).toBeDefined();
Expand All @@ -69,7 +69,7 @@ describe("QueryDiscovery", () => {
]),
});

const discovery = new QueryDiscovery(createMockApp({}), cli);
const discovery = new QueryDiscovery(createMockEnvironmentContext(), cli);
await discovery.refresh();
const queries = discovery.queries;
expect(queries).toBeDefined();
Expand Down Expand Up @@ -114,7 +114,7 @@ describe("QueryDiscovery", () => {
resolveQueries,
});

const discovery = new QueryDiscovery(createMockApp({}), cli);
const discovery = new QueryDiscovery(createMockEnvironmentContext(), cli);
await discovery.refresh();
const queries = discovery.queries;
expect(queries).toBeDefined();
Expand Down Expand Up @@ -153,12 +153,7 @@ describe("QueryDiscovery", () => {
.mockResolvedValue([join(workspaceRoot, "query1.ql")]),
});

const discovery = new QueryDiscovery(
createMockApp({
createEventEmitter: () => new EventEmitter(),
}),
cli,
);
const discovery = new QueryDiscovery(createMockEnvironmentContext(), cli);

const onDidChangeQueriesSpy = jest.fn();
discovery.onDidChangeQueries(onDidChangeQueriesSpy);
Expand All @@ -180,12 +175,12 @@ describe("QueryDiscovery", () => {
it("should refresh when workspace folders change", async () => {
const onDidChangeWorkspaceFoldersEvent =
new EventEmitter<WorkspaceFoldersChangeEvent>();
jest
.spyOn(workspace, "onDidChangeWorkspaceFolders")
.mockImplementation(onDidChangeWorkspaceFoldersEvent.event);

const discovery = new QueryDiscovery(
createMockApp({
createEventEmitter: () => new EventEmitter(),
onDidChangeWorkspaceFolders: onDidChangeWorkspaceFoldersEvent.event,
}),
createMockEnvironmentContext(),
mockedObject<CodeQLCliServer>({
resolveQueries: jest.fn().mockResolvedValue([]),
}),
Expand Down