Skip to content

Commit 9924f87

Browse files
Add a test that calls loadModeledMethods
1 parent f19b600 commit 9924f87

1 file changed

Lines changed: 82 additions & 40 deletions

File tree

extensions/ql-vscode/test/vscode-tests/cli-integration/data-extensions-editor/modeled-method-fs.test.ts

Lines changed: 82 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ import * as tmp from "tmp";
33
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
44
import { getActivatedExtension } from "../../global.helper";
55
import { mkdirSync, writeFileSync } from "fs";
6-
import { listModelFiles } from "../../../../src/data-extensions-editor/modeled-method-fs";
6+
import {
7+
listModelFiles,
8+
loadModeledMethods,
9+
} from "../../../../src/data-extensions-editor/modeled-method-fs";
10+
import { ExtensionPack } from "../../../../src/data-extensions-editor/shared/extension-pack";
711
import { join } from "path";
12+
import { extLogger } from "../../../../src/common/logging/vscode";
813

914
const dummyExtensionPackContents = `
1015
name: dummy/pack
@@ -26,7 +31,8 @@ extensions:
2631
- addsTo:
2732
pack: codeql/java-all
2833
extensible: sinkModel
29-
data: []
34+
data:
35+
- ["org.eclipse.jetty.server","Server",true,"getConnectors","()","","Argument[this]","sql","manual"]
3036
3137
- addsTo:
3238
pack: codeql/java-all
@@ -39,7 +45,7 @@ extensions:
3945
data: []
4046
`;
4147

42-
describe("listModelFiles", () => {
48+
describe("modeled-method-fs", () => {
4349
let tmpDir: string;
4450
let tmpDirRemoveCallback: (() => void) | undefined;
4551
let workspacePath: string;
@@ -69,7 +75,7 @@ describe("listModelFiles", () => {
6975
tmpDirRemoveCallback?.();
7076
});
7177

72-
function makeExtensionPack(
78+
function writeExtensionPackFiles(
7379
extensionPackName: string,
7480
modelFileNames: string[],
7581
): string {
@@ -92,49 +98,85 @@ describe("listModelFiles", () => {
9298
return extensionPackPath;
9399
}
94100

95-
it("should return the empty set when the extension pack is empty", async () => {
96-
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
97-
return;
98-
}
101+
function makeExtensionPack(path: string): ExtensionPack {
102+
return {
103+
path,
104+
yamlPath: path,
105+
name: "dummy/pack",
106+
version: "0.0.1",
107+
extensionTargets: {},
108+
dataExtensions: [],
109+
};
110+
}
99111

100-
const extensionPackPath = makeExtensionPack("extension-pack", []);
112+
describe("listModelFiles", () => {
113+
it("should return the empty set when the extension pack is empty", async () => {
114+
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
115+
return;
116+
}
117+
118+
const extensionPackPath = writeExtensionPackFiles("extension-pack", []);
119+
120+
const modelFiles = await listModelFiles(extensionPackPath, cli);
121+
expect(modelFiles).toEqual(new Set());
122+
});
123+
124+
it("should find all model files", async () => {
125+
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
126+
return;
127+
}
128+
129+
const extensionPackPath = writeExtensionPackFiles("extension-pack", [
130+
"library1.model.yml",
131+
"library2.model.yml",
132+
]);
133+
134+
const modelFiles = await listModelFiles(extensionPackPath, cli);
135+
expect(modelFiles).toEqual(
136+
new Set([
137+
join(extensionPackPath, "models", "library1.model.yml"),
138+
join(extensionPackPath, "models", "library2.model.yml"),
139+
]),
140+
);
141+
});
101142

102-
const modelFiles = await listModelFiles(extensionPackPath, cli);
103-
expect(modelFiles).toEqual(new Set());
104-
});
143+
it("should ignore model files from other extension packs", async () => {
144+
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
145+
return;
146+
}
105147

106-
it("should find all model files", async () => {
107-
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
108-
return;
109-
}
148+
const extensionPackPath = writeExtensionPackFiles("extension-pack", [
149+
"library1.model.yml",
150+
]);
151+
writeExtensionPackFiles("another-extension-pack", ["library2.model.yml"]);
110152

111-
const extensionPackPath = makeExtensionPack("extension-pack", [
112-
"library1.model.yml",
113-
"library2.model.yml",
114-
]);
115-
116-
const modelFiles = await listModelFiles(extensionPackPath, cli);
117-
expect(modelFiles).toEqual(
118-
new Set([
119-
join(extensionPackPath, "models", "library1.model.yml"),
120-
join(extensionPackPath, "models", "library2.model.yml"),
121-
]),
122-
);
153+
const modelFiles = await listModelFiles(extensionPackPath, cli);
154+
expect(modelFiles).toEqual(
155+
new Set([join(extensionPackPath, "models", "library1.model.yml")]),
156+
);
157+
});
123158
});
124159

125-
it("should ignore model files from other extension packs", async () => {
126-
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
127-
return;
128-
}
160+
describe("loadModeledMethods", () => {
161+
it("should load modeled methods", async () => {
162+
if (!(await cli.cliConstraints.supportsResolveExtensions())) {
163+
return;
164+
}
129165

130-
const extensionPackPath = makeExtensionPack("extension-pack", [
131-
"library1.model.yml",
132-
]);
133-
makeExtensionPack("another-extension-pack", ["library2.model.yml"]);
166+
const extensionPackPath = writeExtensionPackFiles("extension-pack", [
167+
"library.model.yml",
168+
]);
134169

135-
const modelFiles = await listModelFiles(extensionPackPath, cli);
136-
expect(modelFiles).toEqual(
137-
new Set([join(extensionPackPath, "models", "library1.model.yml")]),
138-
);
170+
const modeledMethods = await loadModeledMethods(
171+
makeExtensionPack(extensionPackPath),
172+
cli,
173+
extLogger,
174+
);
175+
176+
expect(Object.keys(modeledMethods).length).toEqual(1);
177+
expect(Object.keys(modeledMethods)[0]).toEqual(
178+
"org.eclipse.jetty.server.Server#getConnectors()",
179+
);
180+
});
139181
});
140182
});

0 commit comments

Comments
 (0)