diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 77547d85e..86e8969cf 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -862,6 +862,7 @@ async function activateWithInstalledDistribution( databaseUI, localQueryResultsView, queryStorageDir, + ctx, ); ctx.subscriptions.push(localQueries); diff --git a/extensions/ql-vscode/src/local-queries.ts b/extensions/ql-vscode/src/local-queries.ts index 60461461d..c35dd93f9 100644 --- a/extensions/ql-vscode/src/local-queries.ts +++ b/extensions/ql-vscode/src/local-queries.ts @@ -2,6 +2,7 @@ import { ProgressCallback, ProgressUpdate, withProgress } from "./progress"; import { CancellationToken, CancellationTokenSource, + ExtensionContext, QuickPickItem, Range, Uri, @@ -221,6 +222,7 @@ export class LocalQueries extends DisposableObject { private readonly databaseUI: DatabaseUI, private readonly localQueryResultsView: ResultsView, private readonly queryStorageDir: string, + private readonly ctx: ExtensionContext, ) { super(); } @@ -381,6 +383,8 @@ export class LocalQueries extends DisposableObject { await withProgress( async (progress: ProgressCallback, token: CancellationToken) => { const credentials = isCanary() ? this.app.credentials : undefined; + const contextStoragePath = + this.ctx.storageUri?.fsPath || this.ctx.globalStorageUri.fsPath; const skeletonQueryWizard = new SkeletonQueryWizard( this.cliServer, progress, @@ -388,6 +392,7 @@ export class LocalQueries extends DisposableObject { extLogger, this.databaseManager, token, + contextStoragePath, ); await skeletonQueryWizard.execute(); }, diff --git a/extensions/ql-vscode/src/skeleton-query-wizard.ts b/extensions/ql-vscode/src/skeleton-query-wizard.ts index 9ad782d81..12f1ea035 100644 --- a/extensions/ql-vscode/src/skeleton-query-wizard.ts +++ b/extensions/ql-vscode/src/skeleton-query-wizard.ts @@ -36,6 +36,7 @@ export class SkeletonQueryWizard { private readonly extLogger: OutputChannelLogger, private readonly databaseManager: DatabaseManager, private readonly token: CancellationToken, + private readonly databaseStoragePath: string | undefined, ) {} private get folderName() { @@ -197,6 +198,10 @@ export class SkeletonQueryWizard { throw new Error("Workspace storage path is undefined"); } + if (this.databaseStoragePath === undefined) { + throw new Error("Database storage path is undefined"); + } + if (this.language === undefined) { throw new Error("Language is undefined"); } @@ -220,7 +225,7 @@ export class SkeletonQueryWizard { await databaseFetcher.downloadGitHubDatabase( chosenRepo, this.databaseManager, - this.qlPackStoragePath, + this.databaseStoragePath, this.credentials, this.progress, this.token, diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/skeleton-query-wizard.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/skeleton-query-wizard.test.ts index e92c78b25..a20b71fb3 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/skeleton-query-wizard.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/skeleton-query-wizard.test.ts @@ -114,6 +114,7 @@ describe("SkeletonQueryWizard", () => { extLogger, mockDatabaseManager, token, + storagePath, ); askForGitHubRepoSpy = jest @@ -244,6 +245,7 @@ describe("SkeletonQueryWizard", () => { extLogger, mockDatabaseManagerWithItems, token, + storagePath, ); }); @@ -317,6 +319,7 @@ describe("SkeletonQueryWizard", () => { extLogger, mockDatabaseManager, token, + storagePath, ); expect(wizard.getFirstStoragePath()).toEqual("codespaces-codeql"); @@ -352,6 +355,7 @@ describe("SkeletonQueryWizard", () => { extLogger, mockDatabaseManager, token, + storagePath, ); expect(wizard.getFirstStoragePath()).toEqual("vscode-codeql-starter");