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" ;
88import * as tmp from "tmp" ;
99import {
1010 FileTreeDirectory ,
@@ -13,14 +13,18 @@ import {
1313import { mkdirSync , writeFileSync } from "fs" ;
1414import { QueryLanguage } from "../../../../src/common/query-language" ;
1515import { sleep } from "../../../../src/common/time" ;
16+ import { LanguageContextStore } from "../../../../src/language-context-store" ;
1617
1718describe ( "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