From 245496c854e2ce5a031d3429e91ac77cda32ec7d Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Thu, 5 Nov 2020 06:32:01 -0800 Subject: [PATCH] Remove QLPackDiscovery We no longer rely on qlpacks for our ql test structure. For this reason, we no longer need to do qlpack discovery. --- extensions/ql-vscode/src/qlpack-discovery.ts | 58 ------------------- extensions/ql-vscode/src/qltest-discovery.ts | 11 ---- extensions/ql-vscode/src/query-history.ts | 4 +- extensions/ql-vscode/src/test-adapter.ts | 9 +-- .../qltest-discovery.test.ts | 1 - 5 files changed, 3 insertions(+), 80 deletions(-) delete mode 100644 extensions/ql-vscode/src/qlpack-discovery.ts diff --git a/extensions/ql-vscode/src/qlpack-discovery.ts b/extensions/ql-vscode/src/qlpack-discovery.ts deleted file mode 100644 index fb385fc0b..000000000 --- a/extensions/ql-vscode/src/qlpack-discovery.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { EventEmitter, Event, Uri, WorkspaceFolder, RelativePattern } from 'vscode'; -import { MultiFileSystemWatcher } from './vscode-utils/multi-file-system-watcher'; -import { CodeQLCliServer, QlpacksInfo } from './cli'; -import { Discovery } from './discovery'; - -export interface QLPack { - name: string; - uri: Uri; -} - -/** - * Service to discover all available QL packs in a workspace folder. - */ -export class QLPackDiscovery extends Discovery { - private readonly _onDidChangeQLPacks = this.push(new EventEmitter()); - private readonly watcher = this.push(new MultiFileSystemWatcher()); - private _qlPacks: readonly QLPack[] = []; - - constructor( - private readonly workspaceFolder: WorkspaceFolder, - private readonly cliServer: CodeQLCliServer - ) { - super('QL Pack Discovery'); - - // Watch for any changes to `qlpack.yml` files in this workspace folder. - // TODO: The CLI server should tell us what paths to watch for. - this.watcher.addWatch(new RelativePattern(this.workspaceFolder, '**/qlpack.yml')); - this.watcher.addWatch(new RelativePattern(this.workspaceFolder, '**/.codeqlmanifest.json')); - this.push(this.watcher.onDidChange(this.handleQLPackFileChanged, this)); - } - - public get onDidChangeQLPacks(): Event { return this._onDidChangeQLPacks.event; } - - public get qlPacks(): readonly QLPack[] { return this._qlPacks; } - - private handleQLPackFileChanged(_uri: Uri): void { - this.refresh(); - } - - protected discover(): Promise { - // Only look for QL packs in this workspace folder. - return this.cliServer.resolveQlpacks([this.workspaceFolder.uri.fsPath], []); - } - - protected update(results: QlpacksInfo): void { - const qlPacks: QLPack[] = []; - for (const id in results) { - qlPacks.push(...results[id].map(fsPath => { - return { - name: id, - uri: Uri.file(fsPath) - }; - })); - } - this._qlPacks = qlPacks; - this._onDidChangeQLPacks.fire(); - } -} diff --git a/extensions/ql-vscode/src/qltest-discovery.ts b/extensions/ql-vscode/src/qltest-discovery.ts index 75e910d51..50bb3ee86 100644 --- a/extensions/ql-vscode/src/qltest-discovery.ts +++ b/extensions/ql-vscode/src/qltest-discovery.ts @@ -1,5 +1,4 @@ import * as path from 'path'; -import { QLPackDiscovery } from './qlpack-discovery'; import { Discovery } from './discovery'; import { EventEmitter, Event, Uri, RelativePattern, WorkspaceFolder, env } from 'vscode'; import { MultiFileSystemWatcher } from './vscode-utils/multi-file-system-watcher'; @@ -128,13 +127,11 @@ export class QLTestDiscovery extends Discovery { private _testDirectory: QLTestDirectory | undefined; constructor( - private readonly qlPackDiscovery: QLPackDiscovery, private readonly workspaceFolder: WorkspaceFolder, private readonly cliServer: CodeQLCliServer ) { super('QL Test Discovery'); - this.push(this.qlPackDiscovery.onDidChangeQLPacks(this.handleDidChangeQLPacks, this)); this.push(this.watcher.onDidChange(this.handleDidChange, this)); } @@ -153,21 +150,13 @@ export class QLTestDiscovery extends Discovery { return this._testDirectory; } - private handleDidChangeQLPacks(): void { - this.refresh(); - } - private handleDidChange(uri: Uri): void { if (!QLTestDiscovery.ignoreTestPath(uri.fsPath)) { this.refresh(); } } - static cnt = 0; protected async discover(): Promise { - const timer = 'testDirectory-' + this.workspaceFolder.uri.fsPath + '-' + QLTestDiscovery.cnt++; - console.time(timer); const testDirectory = await this.discoverTests(); - console.timeEnd(timer); return { testDirectory, watchPath: this.workspaceFolder.uri.fsPath diff --git a/extensions/ql-vscode/src/query-history.ts b/extensions/ql-vscode/src/query-history.ts index 803a637de..ef5079654 100644 --- a/extensions/ql-vscode/src/query-history.ts +++ b/extensions/ql-vscode/src/query-history.ts @@ -545,9 +545,7 @@ export class QueryHistoryManager extends DisposableObject { private async tryOpenExternalFile(fileLocation: string) { const uri = vscode.Uri.file(fileLocation); try { - await vscode.window.showTextDocument(uri, { - preview: false - }); + await vscode.window.showTextDocument(uri, { preview: false }); } catch (e) { if ( e.message.includes( diff --git a/extensions/ql-vscode/src/test-adapter.ts b/extensions/ql-vscode/src/test-adapter.ts index 4ece70b98..e6dac4156 100644 --- a/extensions/ql-vscode/src/test-adapter.ts +++ b/extensions/ql-vscode/src/test-adapter.ts @@ -16,7 +16,6 @@ import { TestAdapterRegistrar } from 'vscode-test-adapter-util'; import { QLTestFile, QLTestNode, QLTestDirectory, QLTestDiscovery } from './qltest-discovery'; import { Event, EventEmitter, CancellationTokenSource, CancellationToken } from 'vscode'; import { DisposableObject } from './vscode-utils/disposable-object'; -import { QLPackDiscovery } from './qlpack-discovery'; import { CodeQLCliServer } from './cli'; import { getOnDiskWorkspaceFolders } from './helpers'; import { testLogger } from './logging'; @@ -82,7 +81,6 @@ function changeExtension(p: string, ext: string): string { * Test adapter for QL tests. */ export class QLTestAdapter extends DisposableObject implements TestAdapter { - private readonly qlPackDiscovery: QLPackDiscovery; private readonly qlTestDiscovery: QLTestDiscovery; private readonly _tests = this.push( new EventEmitter()); @@ -97,10 +95,7 @@ export class QLTestAdapter extends DisposableObject implements TestAdapter { ) { super(); - this.qlPackDiscovery = this.push(new QLPackDiscovery(workspaceFolder, cliServer)); - this.qlTestDiscovery = this.push(new QLTestDiscovery(this.qlPackDiscovery, workspaceFolder, cliServer)); - // TODO: Don't run test discovery until pack discovery finishes - this.qlPackDiscovery.refresh(); + this.qlTestDiscovery = this.push(new QLTestDiscovery(workspaceFolder, cliServer)); this.qlTestDiscovery.refresh(); this.push(this.qlTestDiscovery.onDidChangeTests(this.discoverTests, this)); @@ -176,7 +171,7 @@ export class QLTestAdapter extends DisposableObject implements TestAdapter { type: 'finished', suite: testSuite } as TestLoadFinishedEvent); -} + } public async run(tests: string[]): Promise { if (this.runningTask !== undefined) { diff --git a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/qltest-discovery.test.ts b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/qltest-discovery.test.ts index 597e765aa..cab1781ee 100644 --- a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/qltest-discovery.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/qltest-discovery.test.ts @@ -16,7 +16,6 @@ describe('qltest-discovery', () => { const hDir = Uri.parse('file:/a/b/c/f/g/h').fsPath; const iFile = Uri.parse('file:/a/b/c/f/g/h/i.ql').fsPath; const qlTestDiscover = new QLTestDiscovery( - { onDidChangeQLPacks: () => ({}) } as any, { uri: baseUri, name: 'My tests'