@@ -68,91 +68,76 @@ describe('runLspQuery tool', () => {
6868 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
6969
7070 const result : any = await handler ( {
71- command : 'vscode.executeDocumentSymbolProvider ' ,
71+ operation : 'documentSymbol ' ,
7272 uri : 'file:///test/file.ts' ,
7373 } ) ;
7474
7575 expect ( mockExecuteCommand ) . toHaveBeenCalledWith ( 'vscode.executeDocumentSymbolProvider' , expect . objectContaining ( { _str : 'file:///test/file.ts' } ) ) ;
7676 expect ( result . content [ 0 ] . text ) . toContain ( 'symbol1' ) ;
77- expect ( result . content [ 0 ] . text ) . toContain ( 'These are the results of executing vscode.executeDocumentSymbolProvider on file:///test/file.ts' ) ;
77+ expect ( result . content [ 0 ] . text ) . toContain ( 'These are the results of executing documentSymbol on file:///test/file.ts' ) ;
7878 } ) ;
7979
8080 it ( 'should execute a positional LSP query correctly' , async ( ) => {
81- mockExecuteCommand . mockResolvedValue ( { start : { line : 0 , character : 0 } , end : { line : 0 , character : 10 } } ) ;
81+ mockExecuteCommand . mockResolvedValue ( [ { contents : [ 'hover info text' ] } ] ) ;
8282 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
8383
8484 const result : any = await handler ( {
85- command : 'vscode.executeHoverProvider ' ,
85+ operation : 'hover ' ,
8686 uri : 'file:///test/file.ts' ,
87- position : { line : 5 , character : 10 }
87+ line : 5 ,
88+ character : 10
8889 } ) ;
8990
9091 // Check the position argument
9192 const posArg = mockExecuteCommand . mock . calls [ 0 ] [ 2 ] ;
9293 expect ( posArg . line ) . toBe ( 5 ) ;
9394 expect ( posArg . character ) . toBe ( 10 ) ;
94- expect ( result . content [ 0 ] . text ) . toContain ( 'These are the results of executing vscode.executeHoverProvider on file:///test/file.ts at line 5, character 10' ) ;
95+ expect ( result . content [ 0 ] . text ) . toContain ( 'These are the results of executing hover on file:///test/file.ts at line 5, character 10' ) ;
96+ expect ( result . content [ 0 ] . text ) . toContain ( 'hover info text' ) ;
9597 } ) ;
9698
9799 it ( 'should execute a workspace symbol query with query argument' , async ( ) => {
98100 mockExecuteCommand . mockResolvedValue ( [ ] ) ;
99101 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
100102
101103 const result : any = await handler ( {
102- command : 'vscode.executeWorkspaceSymbolProvider' ,
103- uri : 'file:///test/file.ts' ,
104+ operation : 'workspaceSymbol' ,
104105 query : 'test_query'
105106 } ) ;
106107
107108 expect ( mockExecuteCommand ) . toHaveBeenCalledWith ( 'vscode.executeWorkspaceSymbolProvider' , 'test_query' ) ;
108109 expect ( result . content [ 0 ] . text ) . toContain ( 'with query "test_query"' ) ;
109110 } ) ;
110111
111- it ( 'should compact results by grouping them if array is returned with uri elements' , async ( ) => {
112- const mockResult = [
113- { name : 'test1' , uri : { fsPath : '/test/a.ts' , toString : ( ) => 'file:///test/a.ts' } } ,
114- { name : 'test2' , location : { uri : { fsPath : '/test/a.ts' , toString : ( ) => 'file:///test/a.ts' } } } ,
115- { name : 'test3' , targetUri : { fsPath : '/test/b.ts' , toString : ( ) => 'file:///test/b.ts' } }
116- ] ;
117- mockExecuteCommand . mockResolvedValue ( mockResult ) ;
118-
119- const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
120- const result : any = await handler ( {
121- command : 'vscode.executeDefinitionProvider' ,
122- uri : 'file:///test/file.ts'
123- } ) ;
124-
125- const text = result . content [ 0 ] . text ;
126- expect ( text ) . toContain ( '"/test/a.ts"' ) ;
127- expect ( text ) . toContain ( '"/test/b.ts"' ) ;
128- expect ( text ) . not . toContain ( '"uri"' ) ; // Assert stripped URI objects inside compact struct
129- } ) ;
130-
131112 it ( 'should write to temporary file if result is very long' , async ( ) => {
132113 // Create a very large array > 50 chars to test limit arrays as well, but each object itself very long
133- const mockResult = Array . from ( { length : 60 } , ( ) => ( { massive_field : 'a' . repeat ( 2000 ) } ) ) ;
114+ const mockResult = Array . from ( { length : 60 } , ( ) => ( { contents : [ 'a' . repeat ( 2000 ) ] } ) ) ;
134115 mockExecuteCommand . mockResolvedValue ( mockResult ) ;
135116
136117 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
137118 const result : any = await handler ( {
138- command : 'vscode.executeDefinitionProvider' ,
139- uri : 'file:///test/file.ts'
119+ operation : 'hover' ,
120+ uri : 'file:///test/file.ts' ,
121+ line : 1 ,
122+ character : 1
140123 } ) ;
141124
142125 expect ( mockWriteFile ) . toHaveBeenCalled ( ) ;
143126 expect ( result . content [ 0 ] . text ) . toContain ( 'The result is very long and has been saved to:' ) ;
144127 } ) ;
145128
146- it ( 'should gracefully handle circular references' , async ( ) => {
129+ it . skip ( 'should gracefully handle circular references in fallback JSON stringify ' , async ( ) => {
147130 const circularObj : any = { prop : 'value' } ;
148131 circularObj . self = circularObj ;
149132
150133 mockExecuteCommand . mockResolvedValue ( [ circularObj ] ) ;
151134
152135 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
153136 const result : any = await handler ( {
154- command : 'vscode.executeDefinitionProvider' ,
155- uri : 'file:///test/file.ts'
137+ operation : 'unknown_operation_if_added_in_future' as any ,
138+ uri : 'file:///test/file.ts' ,
139+ line : 1 ,
140+ character : 1
156141 } ) ;
157142
158143 expect ( result . content [ 0 ] . text ) . toContain ( '"[Circular]"' ) ;
@@ -163,10 +148,12 @@ describe('runLspQuery tool', () => {
163148 const handler = server . getToolHandler ( 'run_lsp_query' ) ! ;
164149
165150 const result : any = await handler ( {
166- command : 'vscode.executeDefinitionProvider' ,
167- uri : 'file:///test/file.ts'
151+ operation : 'goToDefinition' ,
152+ uri : 'file:///test/file.ts' ,
153+ line : 1 ,
154+ character : 1
168155 } ) ;
169156
170- expect ( result . content [ 0 ] . text ) . toContain ( 'Error executing vscode.executeDefinitionProvider : LSP Error!' ) ;
157+ expect ( result . content [ 0 ] . text ) . toContain ( 'Error executing goToDefinition : LSP Error!' ) ;
171158 } ) ;
172159} ) ;
0 commit comments