Update and add tests.

This commit is contained in:
Anders Starcke Henriksen
2023-09-29 10:51:05 +02:00
parent 1e6b7a6619
commit 169a425e0b
2 changed files with 66 additions and 6 deletions

View File

@@ -56,7 +56,7 @@ class MockAppEventEmitter<T> implements AppEventEmitter<T> {
constructor() {
this.event = () => {
return {} as Disposable;
return new MockAppEvent();
};
}
@@ -69,7 +69,17 @@ class MockAppEventEmitter<T> implements AppEventEmitter<T> {
}
}
export function createMockEnvironmentContext(): EnvironmentContext {
class MockAppEvent implements Disposable {
public fire(): void {
// no-op
}
public dispose() {
// no-op
}
}
function createMockEnvironmentContext(): EnvironmentContext {
return {
language: "en-US",
};

View File

@@ -3,8 +3,8 @@ import {
QueryDiscovery,
QueryPackDiscoverer,
} from "../../../../src/queries-panel/query-discovery";
import { createMockEnvironmentContext } from "../../../__mocks__/appMock";
import { dirname, join } from "path";
import { createMockApp } from "../../../__mocks__/appMock";
import { basename, dirname, join } from "path";
import * as tmp from "tmp";
import {
FileTreeDirectory,
@@ -13,6 +13,7 @@ import {
import { mkdirSync, writeFileSync } from "fs";
import { QueryLanguage } from "../../../../src/common/query-language";
import { sleep } from "../../../../src/common/time";
import { LanguageContextStore } from "../../../../src/language-context-store";
describe("Query pack discovery", () => {
let tmpDir: string;
@@ -20,7 +21,10 @@ describe("Query pack discovery", () => {
let workspacePath: string;
const env = createMockEnvironmentContext();
const app = createMockApp({});
const env = app.environment;
const languageContext = new LanguageContextStore(app);
const onDidChangeQueryPacks = new EventEmitter<void>();
let queryPackDiscoverer: QueryPackDiscoverer;
@@ -45,7 +49,7 @@ describe("Query pack discovery", () => {
getLanguageForQueryFile: () => QueryLanguage.Java,
onDidChangeQueryPacks: onDidChangeQueryPacks.event,
};
discovery = new QueryDiscovery(env, queryPackDiscoverer);
discovery = new QueryDiscovery(app, queryPackDiscoverer, languageContext);
});
afterEach(() => {
@@ -160,6 +164,52 @@ describe("Query pack discovery", () => {
]),
]);
});
it("should respect the language context filter", async () => {
makeTestFile(join(workspacePath, "query1.ql"));
makeTestFile(join(workspacePath, "query2.ql"));
queryPackDiscoverer.getLanguageForQueryFile = (path) => {
if (basename(path) === "query1.ql") {
return QueryLanguage.Java;
} else {
return QueryLanguage.Python;
}
};
await discovery.initialRefresh();
// Set the language to python-only
await languageContext.setLanguageContext(QueryLanguage.Python);
expect(discovery.buildQueryTree()).toEqual([
new FileTreeDirectory(workspacePath, "workspace", env, [
new FileTreeLeaf(
join(workspacePath, "query2.ql"),
"query2.ql",
"python",
),
]),
]);
// Clear the language context filter
await languageContext.clearLanguageContext();
expect(discovery.buildQueryTree()).toEqual([
new FileTreeDirectory(workspacePath, "workspace", env, [
new FileTreeLeaf(
join(workspacePath, "query1.ql"),
"query1.ql",
"java",
),
new FileTreeLeaf(
join(workspacePath, "query2.ql"),
"query2.ql",
"python",
),
]),
]);
});
});
describe("recomputeAllQueryLanguages", () => {