From f4a8de0f6bbfdf09af29e6cd58d23657dbafed6e Mon Sep 17 00:00:00 2001 From: Elena Tanasoiu Date: Tue, 11 Apr 2023 13:34:01 +0000 Subject: [PATCH] Don't count files that are not `example.ql` When we try to determine the next file name for our example query, we only look at `example.ql` files. e.g. if the files in the folder are: - `example.ql` - `example2.ql` - `MyQuery.ql` we will create an `example3.ql` file. Previously we were counting all existing `.ql` files. --- extensions/ql-vscode/src/skeleton-query-wizard.ts | 2 +- .../cli-integration/skeleton-query-wizard.test.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/skeleton-query-wizard.ts b/extensions/ql-vscode/src/skeleton-query-wizard.ts index 7449f1f7d..54a265fbe 100644 --- a/extensions/ql-vscode/src/skeleton-query-wizard.ts +++ b/extensions/ql-vscode/src/skeleton-query-wizard.ts @@ -185,7 +185,7 @@ export class SkeletonQueryWizard { const folderUri = Uri.file(join(this.storagePath, folderName)); const files = await workspace.fs.readDirectory(folderUri); const qlFiles = files.filter(([filename, _fileType]) => - filename.endsWith(".ql"), + filename.match(/example[0-9]*.ql/), ); return `example${qlFiles.length + 1}.ql`; 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 c01c9a3b7..2202a3487 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 @@ -9,7 +9,7 @@ import { TextDocument, window, workspace, WorkspaceFolder } from "vscode"; import { extLogger } from "../../../src/common"; import { QlPackGenerator } from "../../../src/qlpack-generator"; import * as helpers from "../../../src/helpers"; -import { ensureDirSync, removeSync } from "fs-extra"; +import { createFileSync, ensureDirSync, removeSync } from "fs-extra"; import { join } from "path"; import { CancellationTokenSource } from "vscode-jsonrpc"; import { testCredentialsWithStub } from "../../factories/authentication"; @@ -158,6 +158,16 @@ describe("SkeletonQueryWizard", () => { expect(createExampleQlFileSpy).toHaveBeenCalledWith("example2.ql"); }); + it("should only take into account example QL files", async () => { + createFileSync( + join(dir.name, `codeql-custom-queries-${chosenLanguage}`, "MyQuery.ql"), + ); + + await wizard.execute(); + + expect(createExampleQlFileSpy).toHaveBeenCalledWith("example2.ql"); + }); + describe("if QL pack has no query file", () => { it("should create new query file in the same QL pack folder", async () => { removeSync(