-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathtest_communication.jl
88 lines (80 loc) · 2.48 KB
/
test_communication.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
@testitem "Communication" begin
import JSON, JSONRPC, Pkg
using Sockets
include("test_shared_init_request.jl")
init_response = JSON.parse("""
{
"capabilities": {
"textDocumentSync": 2,
"hoverProvider": true,
"completionProvider": {
"resolveProvider": false,
"triggerCharacters": [
"."
]
},
"signatureHelpProvider": {
"triggerCharacters": [
"("
]
},
"definitionProvider": true,
"typeDefinitionProvider": false,
"implementationProvider": false,
"referencesProvider": true,
"documentHighlightProvider": false,
"documentSymbolProvider": true,
"workspaceSymbolProvider": true,
"codeActionProvider": true,
"documentFormattingProvider": true,
"documentRangeFormattingProvider": false,
"renameProvider": {
"prepareProvider": true
},
"documentLinkProvider": {
"resolveProvider": false
},
"colorProvider": false,
"executeCommandProvider": {
"commands": []
},
"workspace": {
"workspaceFolders": {
"supported": true,
"changeNotifications": true
}
},
"experimental": null
}
}
""")
global_socket_name = JSONRPC.generate_pipe_name()
@async try
server = listen(global_socket_name)
try
sock = accept(server)
try
runserver(sock, sock, Pkg.Types.Context().env.project_file, first(DEPOT_PATH))
finally
close(sock)
end
finally
close(server)
end
catch err
Base.display_error(stderr, err, catch_backtrace())
rethrow()
end
sleep(1)
client = connect(global_socket_name)
try
endpoint = JSONRPC.JSONRPCEndpoint(client, client)
run(endpoint)
response = JSONRPC.send_request(endpoint, "initialize", init_request)
@test_broken init_response == response
@test response["capabilities"]["typeDefinitionProvider"] == false
@test response["capabilities"]["renameProvider"] == Dict("prepareProvider" => true)
finally
close(client)
end
end