From 088d2fa91e76cd44aa2d51daa5e5a58b044bf69f Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Wed, 22 May 2024 22:55:59 +0000 Subject: [PATCH] Fix failing tests Also: - Address comments in PR - Add changelog note --- extensions/ql-vscode/CHANGELOG.md | 2 ++ .../vscode/archive-filesystem-provider.ts | 22 +++++++++---------- .../local-databases/database-events.ts | 2 +- .../local-databases/database-manager.ts | 1 - .../local-queries/local-databases.test.ts | 12 ++++++---- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 4ff96f90f..bb3311a05 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -2,6 +2,8 @@ ## [UNRELEASED] +- Fix a bug when re-importing test databases that erroneously showed old source code. [#3616](https://github.com/github/vscode-codeql/pull/3616) + ## 1.13.0 - 1 May 2024 - Add Ruby support to the CodeQL Model Editor. [#3584](https://github.com/github/vscode-codeql/pull/3584) diff --git a/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts b/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts index 483dafabf..c82225f42 100644 --- a/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts +++ b/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts @@ -244,8 +244,6 @@ export class ArchiveFileSystemProvider implements FileSystemProvider { root = new Directory(""); - constructor() {} - flushCache(zipPath: string) { this.archives.delete(zipPath); } @@ -363,17 +361,19 @@ export class ArchiveFileSystemProvider implements FileSystemProvider { */ export const zipArchiveScheme = "codeql-zip-archive"; -export function activate(ctx: ExtensionContext, dbm: DatabaseManager) { +export function activate(ctx: ExtensionContext, dbm?: DatabaseManager) { const afsp = new ArchiveFileSystemProvider(); - ctx.subscriptions.push( - dbm.onDidChangeDatabaseItem(async ({ kind, item: db }) => { - if (kind === DatabaseEventKind.Remove) { - if (db?.sourceArchive) { - afsp.flushCache(db.sourceArchive.fsPath); + if (dbm) { + ctx.subscriptions.push( + dbm.onDidChangeDatabaseItem(async ({ kind, item: db }) => { + if (kind === DatabaseEventKind.Remove) { + if (db?.sourceArchive) { + afsp.flushCache(db.sourceArchive.fsPath); + } } - } - }), - ); + }), + ); + } ctx.subscriptions.push( // When a file system archive is removed from the workspace, we should diff --git a/extensions/ql-vscode/src/databases/local-databases/database-events.ts b/extensions/ql-vscode/src/databases/local-databases/database-events.ts index 9cf7c4865..1fab0d110 100644 --- a/extensions/ql-vscode/src/databases/local-databases/database-events.ts +++ b/extensions/ql-vscode/src/databases/local-databases/database-events.ts @@ -18,6 +18,6 @@ export interface DatabaseChangedEvent { item: DatabaseItem | undefined; // If true, event handlers should consider the database manager // to have been fully refreshed. Any state managed by the - /// event handler shouuld be fully refreshed as well. + // event handler shouuld be fully refreshed as well. fullRefresh: boolean; } diff --git a/extensions/ql-vscode/src/databases/local-databases/database-manager.ts b/extensions/ql-vscode/src/databases/local-databases/database-manager.ts index b4b75fd7e..7b4eb482f 100644 --- a/extensions/ql-vscode/src/databases/local-databases/database-manager.ts +++ b/extensions/ql-vscode/src/databases/local-databases/database-manager.ts @@ -722,7 +722,6 @@ export class DatabaseManager extends DisposableObject { ); } - // note that we use undefined as the item in order to reset the entire tree this._onDidChangeDatabaseItem.fire({ item, kind: DatabaseEventKind.Remove, diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts index 66fcd8093..b72be5488 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts @@ -140,7 +140,8 @@ describe("local databases", () => { }, ]); expect(onDidChangeDatabaseItem).toHaveBeenCalledWith({ - item: undefined, + fullRefresh: true, + item: mockDbItem, kind: DatabaseEventKind.Add, }); @@ -152,7 +153,8 @@ describe("local databases", () => { expect((databaseManager as any)._databaseItems).toEqual([]); expect(updateSpy).toHaveBeenCalledWith("databaseList", []); expect(onDidChangeDatabaseItem).toHaveBeenCalledWith({ - item: undefined, + fullRefresh: true, + item: mockDbItem, kind: DatabaseEventKind.Remove, }); }); @@ -175,7 +177,8 @@ describe("local databases", () => { ]); expect(onDidChangeDatabaseItem).toHaveBeenCalledWith({ - item: undefined, + fullRefresh: true, + item: mockDbItem, kind: DatabaseEventKind.Rename, }); }); @@ -198,7 +201,8 @@ describe("local databases", () => { ]); const mockEvent = { - item: undefined, + fullRefresh: true, + item: mockDbItem, kind: DatabaseEventKind.Add, }; expect(onDidChangeDatabaseItem).toHaveBeenCalledWith(mockEvent);