All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
2 runtime autoload/ale/lsp.vim
4 let g:message_list = []
6 " Register a fake connection and get it for tests.
7 call ale#lsp#Register('ale-fake-lsp-server', '/code', '', {})
8 let b:conn = ale#lsp#GetConnections()['ale-fake-lsp-server:/code']
10 function! ale#lsp#Send(conn_id, message) abort
11 call add(g:message_list, a:message)
17 " Remove the connection with the ID.
18 call ale#lsp#RemoveConnectionWithID(b:conn.id)
23 runtime autoload/ale/lsp.vim
25 Execute(Messages with no method and capabilities should initialize projects):
26 call ale#lsp#HandleInitResponse(b:conn, {
27 \ 'result': {'capabilities': {}},
30 AssertEqual 1, b:conn.initialized
31 AssertEqual [[1, 'initialized', {}]], g:message_list
33 Execute(Other messages should not initialize projects):
34 call ale#lsp#HandleInitResponse(b:conn, {'method': 'lolwat'})
36 AssertEqual 0, b:conn.initialized
37 AssertEqual [], g:message_list
39 call ale#lsp#HandleInitResponse(b:conn, {'result': {'x': {}}})
41 AssertEqual 0, b:conn.initialized
42 AssertEqual [], g:message_list
44 Execute(Capabilities should be set up correctly):
45 call ale#lsp#HandleInitResponse(b:conn, {
50 \ 'renameProvider': v:true,
51 \ 'executeCommandProvider': {
54 \ 'hoverProvider': v:true,
55 \ 'documentSymbolProvider': v:true,
56 \ 'documentRangeFormattingProvider': v:true,
57 \ 'codeLensProvider': {
58 \ 'resolveProvider': v:false
60 \ 'referencesProvider': v:true,
61 \ 'textDocumentSync': 2,
62 \ 'documentFormattingProvider': v:true,
63 \ 'codeActionProvider': v:true,
64 \ 'signatureHelpProvider': {
65 \ 'triggerCharacters': ['(', ','],
67 \ 'completionProvider': {
68 \ 'triggerCharacters': ['.'],
69 \ 'resolveProvider': v:false
71 \ 'definitionProvider': v:true,
73 \ 'documentHighlightProvider': v:true,
74 \ 'workspaceSymbolProvider': v:true
79 AssertEqual 1, b:conn.initialized
84 \ 'completion_trigger_characters': ['.'],
89 \ 'implementation': 0,
95 \ 'typeDefinition': 0,
98 AssertEqual [[1, 'initialized', {}]], g:message_list
100 Execute(Disabled capabilities should be recognised correctly):
101 call ale#lsp#HandleInitResponse(b:conn, {
106 \ 'renameProvider': v:false,
107 \ 'executeCommandProvider': {
110 \ 'hoverProvider': v:false,
111 \ 'documentSymbolProvider': v:true,
112 \ 'documentRangeFormattingProvider': v:true,
113 \ 'codeLensProvider': {
114 \ 'resolveProvider': v:false
116 \ 'referencesProvider': v:false,
117 \ 'textDocumentSync': 2,
118 \ 'documentFormattingProvider': v:true,
119 \ 'codeActionProvider': v:false,
120 \ 'signatureHelpProvider': {
121 \ 'triggerCharacters': ['(', ','],
123 \ 'definitionProvider': v:false,
124 \ 'experimental': {},
125 \ 'documentHighlightProvider': v:true,
126 \ 'diagnosticProvider': {},
131 AssertEqual 1, b:conn.initialized
136 \ 'completion_trigger_characters': [],
141 \ 'implementation': 0,
146 \ 'symbol_search': 0,
147 \ 'typeDefinition': 0,
149 \ b:conn.capabilities
150 AssertEqual [[1, 'initialized', {}]], g:message_list
152 Execute(Capabilities should be enabled when sent as Dictionaries):
153 call ale#lsp#HandleInitResponse(b:conn, {
158 \ 'renameProvider': {},
159 \ 'executeCommandProvider': {
162 \ 'hoverProvider': {},
163 \ 'documentSymbolProvider': v:true,
164 \ 'documentRangeFormattingProvider': v:true,
165 \ 'codeLensProvider': {
166 \ 'resolveProvider': v:false
168 \ 'completionProvider': {
169 \ 'triggerCharacters': ['.'],
170 \ 'resolveProvider': v:false
172 \ 'referencesProvider': {},
173 \ 'textDocumentSync': {
175 \ 'includeText': v:true
178 \ 'documentFormattingProvider': v:true,
179 \ 'codeActionProvider': v:true,
180 \ 'signatureHelpProvider': {
181 \ 'triggerCharacters': ['(', ','],
183 \ 'definitionProvider': {},
184 \ 'typeDefinitionProvider': {},
185 \ 'implementationProvider': {},
186 \ 'experimental': {},
187 \ 'documentHighlightProvider': v:true,
188 \ 'diagnosticProvider': {
189 \ 'interFileDependencies': v:false,
191 \ 'workspaceSymbolProvider': {}
196 AssertEqual 1, b:conn.initialized
201 \ 'completion_trigger_characters': ['.'],
206 \ 'implementation': 1,
211 \ 'symbol_search': 1,
212 \ 'typeDefinition': 1,
214 \ b:conn.capabilities
215 AssertEqual [[1, 'initialized', {}]], g:message_list
217 Execute(Results that are not dictionaries should be handled correctly):
218 call ale#lsp#HandleInitResponse(b:conn, {
223 AssertEqual [], g:message_list