Skip to content

Commit b228549

Browse files
authored
Merge pull request #1860 from github/nora/show-error-empty-list
Show error message when running query on empty list
2 parents 5ba2a5a + 0f1881d commit b228549

2 files changed

Lines changed: 34 additions & 9 deletions

File tree

extensions/ql-vscode/src/remote-queries/repository-selection.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,30 @@ export async function getRepositorySelection(
4141
if (selectedDbItem) {
4242
switch (selectedDbItem.kind) {
4343
case DbItemKind.LocalDatabase || DbItemKind.LocalList:
44-
throw new Error("Local databases and lists are not supported yet.");
44+
throw new UserCancellationException(
45+
"Local databases and lists are not supported yet.",
46+
);
4547
case DbItemKind.RemoteSystemDefinedList:
4648
return { repositoryLists: [selectedDbItem.listName] };
4749
case DbItemKind.RemoteUserDefinedList:
48-
return {
49-
repositories: selectedDbItem.repos.map((repo) => repo.repoFullName),
50-
};
50+
if (selectedDbItem.repos.length === 0) {
51+
throw new UserCancellationException(
52+
"The selected repository list is empty. Please add repositories to it before running a variant analysis.",
53+
);
54+
} else {
55+
return {
56+
repositories: selectedDbItem.repos.map(
57+
(repo) => repo.repoFullName,
58+
),
59+
};
60+
}
5161
case DbItemKind.RemoteOwner:
5262
return { owners: [selectedDbItem.ownerName] };
5363
case DbItemKind.RemoteRepo:
5464
return { repositories: [selectedDbItem.repoFullName] };
5565
}
5666
} else {
57-
throw new Error(
67+
throw new UserCancellationException(
5868
"Please select a remote database to run the query against.",
5969
);
6070
}

extensions/ql-vscode/src/vscode-tests/no-workspace/remote-queries/repository-selection.test.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ import { UserCancellationException } from "../../../commandRunner";
55
import * as config from "../../../config";
66
import { getRepositorySelection } from "../../../remote-queries/repository-selection";
77
import { DbManager } from "../../../databases/db-manager";
8-
import { DbItem, DbItemKind } from "../../../databases/db-item";
8+
import {
9+
DbItem,
10+
DbItemKind,
11+
RemoteRepoDbItem,
12+
} from "../../../databases/db-item";
913

1014
describe("repository selection", () => {
1115
describe("newQueryRunExperience true", () => {
@@ -19,17 +23,28 @@ describe("repository selection", () => {
1923
const dbManager = setUpDbManager(undefined);
2024

2125
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
22-
Error("Please select a remote database to run the query against."),
26+
"Please select a remote database to run the query against.",
2327
);
2428
});
2529

26-
it("should throw error when local database item is selected", async () => {
30+
it("should log error when local database item is selected", async () => {
2731
const dbManager = setUpDbManager({
2832
kind: DbItemKind.LocalDatabase,
2933
} as DbItem);
3034

3135
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
32-
Error("Local databases and lists are not supported yet."),
36+
"Local databases and lists are not supported yet.",
37+
);
38+
});
39+
40+
it("should log an error when an empty remote user defined list is selected", async () => {
41+
const dbManager = setUpDbManager({
42+
kind: DbItemKind.RemoteUserDefinedList,
43+
repos: [] as RemoteRepoDbItem[],
44+
} as DbItem);
45+
46+
await expect(getRepositorySelection(dbManager)).rejects.toThrow(
47+
"The selected repository list is empty. Please add repositories to it before running a variant analysis.",
3348
);
3449
});
3550

0 commit comments

Comments
 (0)