mirror of
https://github.com/c-cube/linol.git
synced 2025-12-09 04:35:37 -05:00
29 lines
986 B
OCaml
29 lines
986 B
OCaml
open Test.Import
|
|
|
|
let client_capabilities = ClientCapabilities.create ()
|
|
let uri = DocumentUri.of_path "test.ml"
|
|
|
|
let test ?extra_env text req =
|
|
let on_notification, diagnostics = Test.drain_diagnostics () in
|
|
let handler = Client.Handler.make ~on_notification () in
|
|
Test.run ~handler ?extra_env (fun client ->
|
|
let run_client () =
|
|
Client.start client (InitializeParams.create ~capabilities:client_capabilities ())
|
|
in
|
|
let run () =
|
|
let* (_ : InitializeResult.t) = Client.initialized client in
|
|
let textDocument =
|
|
TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text
|
|
in
|
|
let* () =
|
|
Client.notification
|
|
client
|
|
(TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument))
|
|
in
|
|
let* () = req client in
|
|
let* () = Client.request client Shutdown in
|
|
let* () = Fiber.Ivar.read diagnostics in
|
|
Client.stop client
|
|
in
|
|
Fiber.fork_and_join_unit run_client run)
|
|
;;
|