@@ -3,8 +3,13 @@ import * as tmp from "tmp";
33import { CodeQLCliServer } from "../../../../src/codeql-cli/cli" ;
44import { getActivatedExtension } from "../../global.helper" ;
55import { 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" ;
711import { join } from "path" ;
12+ import { extLogger } from "../../../../src/common/logging/vscode" ;
813
914const dummyExtensionPackContents = `
1015name: 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