Skip to content

Commit 5ca084b

Browse files
committed
Use language display name when asking for language
1 parent 407825e commit 5ca084b

4 files changed

Lines changed: 48 additions & 19 deletions

File tree

extensions/ql-vscode/src/codeql-cli/query-language.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { CodeQLCliServer } from "./cli";
22
import { Uri, window } from "vscode";
3-
import { isQueryLanguage, QueryLanguage } from "../common/query-language";
3+
import {
4+
getLanguageDisplayName,
5+
isQueryLanguage,
6+
QueryLanguage,
7+
} from "../common/query-language";
48
import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
59
import { extLogger } from "../common/logging/vscode";
610
import { UserCancellationException } from "../common/vscode/progress";
@@ -46,14 +50,22 @@ export async function askForLanguage(
4650
cliServer: CodeQLCliServer,
4751
throwOnEmpty = true,
4852
): Promise<QueryLanguage | undefined> {
49-
const language = await window.showQuickPick(
50-
await cliServer.getSupportedLanguages(),
51-
{
52-
placeHolder: "Select target language for your query",
53-
ignoreFocusOut: true,
54-
},
55-
);
56-
if (!language) {
53+
const supportedLanguages = await cliServer.getSupportedLanguages();
54+
55+
const items = supportedLanguages
56+
.filter((language) => isQueryLanguage(language))
57+
.map((language) => ({
58+
label: getLanguageDisplayName(language),
59+
description: language,
60+
language,
61+
}))
62+
.sort((a, b) => a.label.localeCompare(b.label));
63+
64+
const selectedItem = await window.showQuickPick(items, {
65+
placeHolder: "Select target language for your query",
66+
ignoreFocusOut: true,
67+
});
68+
if (!selectedItem) {
5769
// This only happens if the user cancels the quick pick.
5870
if (throwOnEmpty) {
5971
throw new UserCancellationException("Cancelled.");
@@ -66,6 +78,8 @@ export async function askForLanguage(
6678
return undefined;
6779
}
6880

81+
const language = selectedItem.language;
82+
6983
if (!isQueryLanguage(language)) {
7084
void showAndLogErrorMessage(
7185
extLogger,

extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ describe("SkeletonQueryWizard", () => {
6565

6666
beforeEach(async () => {
6767
mockCli = mockedObject<CodeQLCliServer>({
68-
resolveLanguages: jest
68+
getSupportedLanguages: jest
6969
.fn()
7070
.mockResolvedValue([
7171
"ruby",
@@ -76,7 +76,6 @@ describe("SkeletonQueryWizard", () => {
7676
"csharp",
7777
"cpp",
7878
]),
79-
getSupportedLanguages: jest.fn(),
8079
});
8180

8281
mockDatabaseManager = mockedObject<DatabaseManager>({
@@ -102,9 +101,12 @@ describe("SkeletonQueryWizard", () => {
102101
},
103102
] as WorkspaceFolder[]);
104103

105-
quickPickSpy = jest
106-
.spyOn(window, "showQuickPick")
107-
.mockResolvedValueOnce(mockedQuickPickItem(chosenLanguage));
104+
quickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValueOnce(
105+
mockedQuickPickItem({
106+
label: chosenLanguage,
107+
language: chosenLanguage,
108+
}),
109+
);
108110
showInputBoxSpy = jest
109111
.spyOn(window, "showInputBox")
110112
.mockResolvedValue(storagePath);

extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-manager.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,12 @@ describe("Variant Analysis Manager", () => {
7979
).fsPath;
8080

8181
beforeEach(async () => {
82-
jest
83-
.spyOn(window, "showQuickPick")
84-
.mockResolvedValueOnce(mockedQuickPickItem("javascript"));
82+
jest.spyOn(window, "showQuickPick").mockResolvedValueOnce(
83+
mockedQuickPickItem({
84+
label: "JavaScript",
85+
language: "javascript",
86+
}),
87+
);
8588

8689
cancellationTokenSource = new CancellationTokenSource();
8790

extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-submission-integration.test.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,12 @@ describe("Variant Analysis Submission Integration", () => {
6767
await showQlDocument("query.ql");
6868

6969
// Select target language for your query
70-
quickPickSpy.mockResolvedValueOnce(mockedQuickPickItem("javascript"));
70+
quickPickSpy.mockResolvedValueOnce(
71+
mockedQuickPickItem({
72+
label: "JavaScript",
73+
language: "javascript",
74+
}),
75+
);
7176

7277
await commandManager.execute("codeQL.runVariantAnalysis");
7378

@@ -106,7 +111,12 @@ describe("Variant Analysis Submission Integration", () => {
106111
await showQlDocument("query.ql");
107112

108113
// Select target language for your query
109-
quickPickSpy.mockResolvedValueOnce(mockedQuickPickItem("javascript"));
114+
quickPickSpy.mockResolvedValueOnce(
115+
mockedQuickPickItem({
116+
label: "JavaScript",
117+
language: "javascript",
118+
}),
119+
);
110120

111121
await commandManager.execute("codeQL.runVariantAnalysis");
112122

0 commit comments

Comments
 (0)