@@ -8,7 +8,7 @@ import { createModelReference } from 'vscode/monaco'
88import * as vscode from 'vscode'
99import { RegisteredFileSystemProvider , RegisteredMemoryFile , registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override'
1010import pDefer , { TestInfrastructure , waitClientNotification , waitClientRequest } from './tools'
11- import { GetTextDocumentParams , getTextDocumentRequestType , GetTextDocumentResult , saveTextDocumentRequestType } from '../customRequests'
11+ import { getFileStatsRequestType , ReadFileParams , readFileRequestType , ReadFileResult , StatFileParams , StatFileResult , WriteFileParams , writeFileRequestType } from '../customRequests'
1212import { createLanguageClientManager , LanguageClientManager , getLanguageClientOptions , StaticLanguageClientId } from '..'
1313
1414async function initializeLanguageClientAndGetConnection (
@@ -181,17 +181,28 @@ async function testLanguageClient (
181181 return editor
182182 } )
183183
184- const [ getDocumentRequest , sendGetDocumentRequestResponse ] = await waitClientRequest < GetTextDocumentParams , GetTextDocumentResult , never > ( handler => connection . onRequest ( getTextDocumentRequestType , handler ) )
185- expect ( getDocumentRequest ) . toEqual ( {
186- textDocument : {
187- uri : 'file:///tmp/project/src/main/Otherfile.java'
188- }
184+ const readFileRequestPromise = waitClientRequest < ReadFileParams , ReadFileResult , never > ( handler => connection . onRequest ( readFileRequestType , handler ) )
185+ const [ getFileStatsRequest , sendGetFileStatsRequestResponse ] = await waitClientRequest < StatFileParams , StatFileResult , never > ( handler => connection . onRequest ( getFileStatsRequestType , handler ) )
186+ expect ( getFileStatsRequest ) . toEqual ( {
187+ uri : 'file:///tmp/project/src/main/Otherfile.java'
188+ } )
189+
190+ sendGetFileStatsRequestResponse ( {
191+ mtime : 0 ,
192+ name : 'Otherfile.java' ,
193+ size : 50 ,
194+ type : 'file'
195+ } )
196+
197+ const [ readFileRequest , sendReadFileRequestResponse ] = await readFileRequestPromise
198+ expect ( readFileRequest ) . toEqual ( {
199+ uri : 'file:///tmp/project/src/main/Otherfile.java'
189200 } )
190201
191202 const openNotificationPromise = waitClientNotification ( connection . onDidOpenTextDocument )
192203
193- sendGetDocumentRequestResponse ( {
194- text : 'other file content'
204+ sendReadFileRequestResponse ( {
205+ content : btoa ( 'other file content' )
195206 } )
196207
197208 // Expect the model to be open
@@ -218,7 +229,7 @@ async function testLanguageClient (
218229
219230 // Expect the model to be saved
220231 const willSavePromise = waitClientNotification ( connection . onWillSaveTextDocument )
221- const saveRequestPromise = waitClientRequest ( handler => connection . onRequest ( saveTextDocumentRequestType , handler ) )
232+ const writeFileRequestPromise = waitClientRequest < WriteFileParams , void , never > ( handler => connection . onRequest ( writeFileRequestType , handler ) )
222233 const didSavePromise = waitClientNotification ( connection . onDidSaveTextDocument )
223234
224235 expect ( await willSavePromise ) . toEqual ( {
@@ -227,14 +238,12 @@ async function testLanguageClient (
227238 } ,
228239 reason : vscode . TextDocumentSaveReason . Manual
229240 } )
230- const [ saveRequest , sendSaveRequestResponse ] = await saveRequestPromise
231- expect ( await saveRequest ) . toEqual ( {
232- textDocument : {
233- uri : mainFileUri . toString ( ) ,
234- text : modelRef . object . textEditorModel ! . getValue ( )
235- }
241+ const [ writeFileRequest , sendWriteFileResponse ] = await writeFileRequestPromise
242+ expect ( writeFileRequest ) . toEqual ( {
243+ uri : mainFileUri . toString ( ) ,
244+ content : btoa ( modelRef . object . textEditorModel ! . getValue ( ) )
236245 } )
237- sendSaveRequestResponse ( null )
246+ sendWriteFileResponse ( )
238247
239248 expect ( await didSavePromise ) . toEqual ( {
240249 textDocument : {
0 commit comments