@@ -131,92 +131,6 @@ func TestProxy(t *testing.T) {
131
131
"a_test.go:1:46" : "A int" ,
132
132
},
133
133
},
134
- "go subdirectory in repo" : {
135
- rootURI : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d" ,
136
- mode : "go" ,
137
- fs : map [string ]string {
138
- "a.go" : "package d; func A() { A() }" ,
139
- "d2/b.go" : `package d2; import "test/pkg/d"; func B() { d.A(); B() }` ,
140
- },
141
- wantHover : map [string ]string {
142
- "a.go:1:17" : "func A()" ,
143
- "a.go:1:23" : "func A()" ,
144
- "d2/b.go:1:39" : "func B()" ,
145
- "d2/b.go:1:47" : "func A()" ,
146
- "d2/b.go:1:52" : "func B()" ,
147
- },
148
- wantDefinition : map [string ]string {
149
- "a.go:1:17" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17" ,
150
- "a.go:1:23" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17" ,
151
- "d2/b.go:1:39" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:39" ,
152
- "d2/b.go:1:47" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17" ,
153
- "d2/b.go:1:52" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:39" ,
154
- },
155
- wantXDefinition : map [string ]string {
156
- "a.go:1:17" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17 id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
157
- "a.go:1:23" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17 id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
158
- "d2/b.go:1:39" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:39 id:test/pkg/d/d2/-/B name:B package:test/pkg/d/d2 packageName:d2 recv: vendor:false" ,
159
- "d2/b.go:1:47" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:1:17 id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
160
- "d2/b.go:1:52" : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:39 id:test/pkg/d/d2/-/B name:B package:test/pkg/d/d2 packageName:d2 recv: vendor:false" ,
161
- },
162
- wantSymbols : map [string ][]string {
163
- "" : []string {"git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:function:A:0:16" , "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:function:B:0:38" },
164
- "is:exported" : []string {"git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/a.go:function:A:0:16" , "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:function:B:0:38" },
165
- },
166
- wantXReferences : map [* lsext.WorkspaceReferencesParams ][]string {
167
- // Non-matching name query.
168
- {Query : lsext.SymbolDescriptor {"name" : "nope" }}: []string {},
169
-
170
- // Matching against invalid field name.
171
- {Query : lsext.SymbolDescriptor {"nope" : "A" }}: []string {},
172
-
173
- // Matching against an invalid dirs hint.
174
- {Query : lsext.SymbolDescriptor {"package" : "test/pkg/d" }, Hints : map [string ]interface {}{"dirs" : []string {"file:///src/test/pkg/d/d3" }}}: []string {},
175
-
176
- // Matching against a dirs hint with multiple dirs.
177
- {Query : lsext.SymbolDescriptor {"package" : "test/pkg/d" }, Hints : map [string ]interface {}{"dirs" : []string {"file:///d2" , "file:///invalid" }}}: []string {
178
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:20-1:32 -> id:test/pkg/d name: package:test/pkg/d packageName:d recv: vendor:false" ,
179
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:47-1:48 -> id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
180
- },
181
-
182
- // Matching against a dirs hint.
183
- {Query : lsext.SymbolDescriptor {"package" : "test/pkg/d" }, Hints : map [string ]interface {}{"dirs" : []string {"file:///d2" }}}: []string {
184
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:20-1:32 -> id:test/pkg/d name: package:test/pkg/d packageName:d recv: vendor:false" ,
185
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:47-1:48 -> id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
186
- },
187
-
188
- // Matching against single field.
189
- {Query : lsext.SymbolDescriptor {"package" : "test/pkg/d" }}: []string {
190
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:20-1:32 -> id:test/pkg/d name: package:test/pkg/d packageName:d recv: vendor:false" ,
191
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:47-1:48 -> id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
192
- },
193
-
194
- // Matching against no fields.
195
- {Query : lsext.SymbolDescriptor {}}: []string {
196
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:20-1:32 -> id:test/pkg/d name: package:test/pkg/d packageName:d recv: vendor:false" ,
197
- "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:47-1:48 -> id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" ,
198
- },
199
- {
200
- Query : lsext.SymbolDescriptor {
201
- "name" : "" ,
202
- "package" : "test/pkg/d" ,
203
- "packageName" : "d" ,
204
- "recv" : "" ,
205
- "vendor" : false ,
206
- },
207
- }: []string {"git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:20-1:32 -> id:test/pkg/d name: package:test/pkg/d packageName:d recv: vendor:false" },
208
- {
209
- Query : lsext.SymbolDescriptor {
210
- "name" : "A" ,
211
- "package" : "test/pkg/d" ,
212
- "packageName" : "d" ,
213
- "recv" : "" ,
214
- "vendor" : false ,
215
- },
216
- }: []string {"git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef#d/d2/b.go:1:47-1:48 -> id:test/pkg/d/-/A name:A package:test/pkg/d packageName:d recv: vendor:false" },
217
- },
218
- wantXPackages : []string {"test/pkg/d" , "test/pkg/d/d2" },
219
- },
220
134
"go multiple packages in dir" : {
221
135
rootURI : "git://test/pkg?deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" ,
222
136
mode : "go" ,
@@ -606,18 +520,32 @@ func yza() {}
606
520
t .Fatal (err )
607
521
}
608
522
609
- c , done := connectionToNewBuildServer (string (test .rootURI ), t )
610
- defer done ()
523
+ r := func (clientUsesFileSchemeWithinWorkspace bool ) {
524
+ c , done := connectionToNewBuildServer (string (test .rootURI ), t , clientUsesFileSchemeWithinWorkspace )
525
+ defer done ()
526
+
527
+ // Prepare the connection.
528
+ var initializeParams lspext.InitializeParams
529
+ if clientUsesFileSchemeWithinWorkspace {
530
+ initializeParams = lspext.InitializeParams {
531
+ InitializeParams : lsp.InitializeParams {RootURI : "file:///" },
532
+ OriginalRootURI : test .rootURI ,
533
+ }
534
+ } else {
535
+ initializeParams = lspext.InitializeParams {
536
+ InitializeParams : lsp.InitializeParams {RootURI : test .rootURI },
537
+ OriginalRootURI : "" ,
538
+ }
539
+ }
540
+ if err := c .Call (ctx , "initialize" , initializeParams , nil ); err != nil {
541
+ t .Fatal ("initialize:" , err )
542
+ }
611
543
612
- // Prepare the connection.
613
- if err := c .Call (ctx , "initialize" , lspext.InitializeParams {
614
- InitializeParams : lsp.InitializeParams {RootURI : "file:///" },
615
- OriginalRootURI : test .rootURI ,
616
- }, nil ); err != nil {
617
- t .Fatal ("initialize:" , err )
544
+ lspTests (t , ctx , c , root , test .wantHover , test .wantDefinition , test .wantXDefinition , test .wantReferences , test .wantSymbols , test .wantXDependencies , test .wantXReferences , test .wantXPackages )
618
545
}
619
546
620
- lspTests (t , ctx , c , root , test .wantHover , test .wantDefinition , test .wantXDefinition , test .wantReferences , test .wantSymbols , test .wantXDependencies , test .wantXReferences , test .wantXPackages )
547
+ r (true )
548
+ r (false )
621
549
})
622
550
}
623
551
}
@@ -649,7 +577,7 @@ func (c *pipeReadWriteCloser) Close() error {
649
577
return err2
650
578
}
651
579
652
- func connectionToNewBuildServer (root string , t testing.TB ) (* jsonrpc2.Conn , func ()) {
580
+ func connectionToNewBuildServer (root string , t testing.TB , rewriteURIs bool ) (* jsonrpc2.Conn , func ()) {
653
581
rootURI , err := gituri .Parse (root )
654
582
if err != nil {
655
583
t .Fatal (err )
@@ -684,18 +612,22 @@ func connectionToNewBuildServer(root string, t testing.TB) (*jsonrpc2.Conn, func
684
612
685
613
onSend := func (req * jsonrpc2.Request , res * jsonrpc2.Response ) {
686
614
if res == nil {
687
- err := convertURIs (req .Params , RelWorkspaceURI )
688
- if err != nil {
689
- t .Fatal (err )
615
+ if rewriteURIs {
616
+ err := convertURIs (req .Params , RelWorkspaceURI )
617
+ if err != nil {
618
+ t .Fatal (err )
619
+ }
690
620
}
691
621
}
692
622
}
693
623
694
624
onRecv := func (req * jsonrpc2.Request , res * jsonrpc2.Response ) {
695
625
if res != nil && res .Result != nil {
696
- err := convertURIs (res .Result , AbsWorkspaceURI )
697
- if err != nil {
698
- t .Fatal (err )
626
+ if rewriteURIs {
627
+ err := convertURIs (res .Result , AbsWorkspaceURI )
628
+ if err != nil {
629
+ t .Fatal (err )
630
+ }
699
631
}
700
632
}
701
633
}
0 commit comments