@@ -210,6 +210,71 @@ suite("LanguageClientManager Suite", () => {
210
210
mockedEnvironment . setValue ( { } ) ;
211
211
} ) ;
212
212
213
+ suite . only ( "LanguageClientToolchainCoordinator" , ( ) => {
214
+ test ( "returns the same language client for the same folder" , async ( ) => {
215
+ const factory = new LanguageClientToolchainCoordinator (
216
+ instance ( mockedWorkspace ) ,
217
+ languageClientFactoryMock
218
+ ) ;
219
+
220
+ const sut1 = factory . get ( instance ( mockedFolder ) ) ;
221
+ const sut2 = factory . get ( instance ( mockedFolder ) ) ;
222
+
223
+ expect ( sut1 ) . to . equal ( sut2 , "Expected the same LanguageClient to be returned" ) ;
224
+ expect ( languageClientFactoryMock . createLanguageClient ) . to . have . been . calledOnce ;
225
+ } ) ;
226
+
227
+ test ( "returns the same language client for two folders with the same toolchain" , async ( ) => {
228
+ const newFolder = mockObject < FolderContext > ( {
229
+ isRootFolder : false ,
230
+ folder : vscode . Uri . file ( "/folder11" ) ,
231
+ workspaceFolder : {
232
+ uri : vscode . Uri . file ( "/folder11" ) ,
233
+ name : "folder11" ,
234
+ index : 0 ,
235
+ } ,
236
+ workspaceContext : instance ( mockedWorkspace ) ,
237
+ swiftVersion : mockedFolder . swiftVersion ,
238
+ } ) ;
239
+ mockedWorkspace . folders . push ( instance ( newFolder ) ) ;
240
+ const factory = new LanguageClientToolchainCoordinator (
241
+ instance ( mockedWorkspace ) ,
242
+ languageClientFactoryMock
243
+ ) ;
244
+
245
+ const sut1 = factory . get ( instance ( mockedFolder ) ) ;
246
+ const sut2 = factory . get ( instance ( newFolder ) ) ;
247
+
248
+ expect ( sut1 ) . to . equal ( sut2 , "Expected the same LanguageClient to be returned" ) ;
249
+ expect ( languageClientFactoryMock . createLanguageClient ) . to . have . been . calledOnce ;
250
+ } ) ;
251
+
252
+ test ( "returns the a new language client for folders with different toolchains" , async ( ) => {
253
+ const newFolder = mockObject < FolderContext > ( {
254
+ isRootFolder : false ,
255
+ folder : vscode . Uri . file ( "/folder11" ) ,
256
+ workspaceFolder : {
257
+ uri : vscode . Uri . file ( "/folder11" ) ,
258
+ name : "folder11" ,
259
+ index : 0 ,
260
+ } ,
261
+ workspaceContext : instance ( mockedWorkspace ) ,
262
+ swiftVersion : new Version ( 6 , 1 , 0 ) ,
263
+ } ) ;
264
+ mockedWorkspace . folders . push ( instance ( newFolder ) ) ;
265
+ const factory = new LanguageClientToolchainCoordinator (
266
+ instance ( mockedWorkspace ) ,
267
+ languageClientFactoryMock
268
+ ) ;
269
+
270
+ const sut1 = factory . get ( instance ( mockedFolder ) ) ;
271
+ const sut2 = factory . get ( instance ( newFolder ) ) ;
272
+
273
+ expect ( sut1 ) . to . not . equal ( sut2 , "Expected different LanguageClients to be returned" ) ;
274
+ expect ( languageClientFactoryMock . createLanguageClient ) . to . have . been . calledOnce ;
275
+ } ) ;
276
+ } ) ;
277
+
213
278
test ( "launches SourceKit-LSP on startup" , async ( ) => {
214
279
const factory = new LanguageClientToolchainCoordinator (
215
280
instance ( mockedWorkspace ) ,
0 commit comments