Skip to content

Commit 169a425

Browse files
committed
Update and add tests.
1 parent 1e6b7a6 commit 169a425

File tree

2 files changed

+66
-6
lines changed

2 files changed

+66
-6
lines changed

extensions/ql-vscode/test/__mocks__/appMock.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class MockAppEventEmitter<T> implements AppEventEmitter<T> {
5656

5757
constructor() {
5858
this.event = () => {
59-
return {} as Disposable;
59+
return new MockAppEvent();
6060
};
6161
}
6262

@@ -69,7 +69,17 @@ class MockAppEventEmitter<T> implements AppEventEmitter<T> {
6969
}
7070
}
7171

72-
export function createMockEnvironmentContext(): EnvironmentContext {
72+
class MockAppEvent implements Disposable {
73+
public fire(): void {
74+
// no-op
75+
}
76+
77+
public dispose() {
78+
// no-op
79+
}
80+
}
81+
82+
function createMockEnvironmentContext(): EnvironmentContext {
7383
return {
7484
language: "en-US",
7585
};

extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-discovery.test.ts

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
QueryDiscovery,
44
QueryPackDiscoverer,
55
} from "../../../../src/queries-panel/query-discovery";
6-
import { createMockEnvironmentContext } from "../../../__mocks__/appMock";
7-
import { dirname, join } from "path";
6+
import { createMockApp } from "../../../__mocks__/appMock";
7+
import { basename, dirname, join } from "path";
88
import * as tmp from "tmp";
99
import {
1010
FileTreeDirectory,
@@ -13,14 +13,18 @@ import {
1313
import { mkdirSync, writeFileSync } from "fs";
1414
import { QueryLanguage } from "../../../../src/common/query-language";
1515
import { sleep } from "../../../../src/common/time";
16+
import { LanguageContextStore } from "../../../../src/language-context-store";
1617

1718
describe("Query pack discovery", () => {
1819
let tmpDir: string;
1920
let tmpDirRemoveCallback: (() => void) | undefined;
2021

2122
let workspacePath: string;
2223

23-
const env = createMockEnvironmentContext();
24+
const app = createMockApp({});
25+
const env = app.environment;
26+
27+
const languageContext = new LanguageContextStore(app);
2428

2529
const onDidChangeQueryPacks = new EventEmitter<void>();
2630
let queryPackDiscoverer: QueryPackDiscoverer;
@@ -45,7 +49,7 @@ describe("Query pack discovery", () => {
4549
getLanguageForQueryFile: () => QueryLanguage.Java,
4650
onDidChangeQueryPacks: onDidChangeQueryPacks.event,
4751
};
48-
discovery = new QueryDiscovery(env, queryPackDiscoverer);
52+
discovery = new QueryDiscovery(app, queryPackDiscoverer, languageContext);
4953
});
5054

5155
afterEach(() => {
@@ -160,6 +164,52 @@ describe("Query pack discovery", () => {
160164
]),
161165
]);
162166
});
167+
168+
it("should respect the language context filter", async () => {
169+
makeTestFile(join(workspacePath, "query1.ql"));
170+
makeTestFile(join(workspacePath, "query2.ql"));
171+
172+
queryPackDiscoverer.getLanguageForQueryFile = (path) => {
173+
if (basename(path) === "query1.ql") {
174+
return QueryLanguage.Java;
175+
} else {
176+
return QueryLanguage.Python;
177+
}
178+
};
179+
180+
await discovery.initialRefresh();
181+
182+
// Set the language to python-only
183+
await languageContext.setLanguageContext(QueryLanguage.Python);
184+
185+
expect(discovery.buildQueryTree()).toEqual([
186+
new FileTreeDirectory(workspacePath, "workspace", env, [
187+
new FileTreeLeaf(
188+
join(workspacePath, "query2.ql"),
189+
"query2.ql",
190+
"python",
191+
),
192+
]),
193+
]);
194+
195+
// Clear the language context filter
196+
await languageContext.clearLanguageContext();
197+
198+
expect(discovery.buildQueryTree()).toEqual([
199+
new FileTreeDirectory(workspacePath, "workspace", env, [
200+
new FileTreeLeaf(
201+
join(workspacePath, "query1.ql"),
202+
"query1.ql",
203+
"java",
204+
),
205+
new FileTreeLeaf(
206+
join(workspacePath, "query2.ql"),
207+
"query2.ql",
208+
"python",
209+
),
210+
]),
211+
]);
212+
});
163213
});
164214

165215
describe("recomputeAllQueryLanguages", () => {

0 commit comments

Comments
 (0)