mirror of
https://github.com/c-cube/linol.git
synced 2025-12-08 20:25:35 -05:00
72 lines
1.9 KiB
OCaml
72 lines
1.9 KiB
OCaml
open! Test.Import
|
|
|
|
let path = Filename.concat (Sys.getcwd ()) "for_pp.ml"
|
|
let uri = DocumentUri.of_path path
|
|
|
|
let print_hover hover =
|
|
match hover with
|
|
| None -> print_endline "no hover response"
|
|
| Some hover ->
|
|
hover |> Hover.yojson_of_t |> Yojson.Safe.pretty_to_string ~std:false |> print_endline
|
|
;;
|
|
|
|
let hover_req client position =
|
|
Client.request
|
|
client
|
|
(TextDocumentHover
|
|
{ HoverParams.position
|
|
; textDocument = TextDocumentIdentifier.create ~uri
|
|
; workDoneToken = None
|
|
})
|
|
;;
|
|
|
|
let%expect_test "with-pp" =
|
|
let position = Position.create ~line:0 ~character:9 in
|
|
let handler =
|
|
Client.Handler.make
|
|
~on_notification:(fun client _notification ->
|
|
Client.state client;
|
|
Fiber.return ())
|
|
()
|
|
in
|
|
let output =
|
|
Test.run ~handler
|
|
@@ fun client ->
|
|
let run_client () =
|
|
let capabilities = ClientCapabilities.create () in
|
|
Client.start client (InitializeParams.create ~capabilities ())
|
|
in
|
|
let run () =
|
|
let* (_ : InitializeResult.t) = Client.initialized client in
|
|
let textDocument =
|
|
let text = Io.String_path.read_file path in
|
|
TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text
|
|
in
|
|
let* () =
|
|
Client.notification
|
|
client
|
|
(TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument))
|
|
in
|
|
let* () =
|
|
let+ resp = hover_req client position in
|
|
print_hover resp
|
|
in
|
|
let output = [%expect.output] in
|
|
let* () = Client.request client Shutdown in
|
|
let+ () = Client.stop client in
|
|
output
|
|
in
|
|
Fiber.fork_and_join_unit run_client run
|
|
in
|
|
let (_ : string) = [%expect.output] in
|
|
print_endline output;
|
|
[%expect
|
|
{|
|
|
{
|
|
"contents": { "kind": "plaintext", "value": "type universe" },
|
|
"range": {
|
|
"end": { "character": 13, "line": 0 },
|
|
"start": { "character": 0, "line": 0 }
|
|
}
|
|
}|}]
|
|
;;
|