@@ -210,6 +210,71 @@ suite("LanguageClientManager Suite", () => {
210210 mockedEnvironment . setValue ( { } ) ;
211211 } ) ;
212212
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+
213278 test ( "launches SourceKit-LSP on startup" , async ( ) => {
214279 const factory = new LanguageClientToolchainCoordinator (
215280 instance ( mockedWorkspace ) ,
0 commit comments