diff options
Diffstat (limited to 'test/completion')
-rw-r--r-- | test/completion/test_completion_events.vader | 14 | ||||
-rw-r--r-- | test/completion/test_completion_filtering.vader | 26 | ||||
-rw-r--r-- | test/completion/test_completion_prefixes.vader | 20 | ||||
-rw-r--r-- | test/completion/test_lsp_completion_messages.vader | 26 | ||||
-rw-r--r-- | test/completion/test_lsp_completion_parsing.vader | 24 | ||||
-rw-r--r-- | test/completion/test_tsserver_completion_parsing.vader | 18 |
6 files changed, 110 insertions, 18 deletions
diff --git a/test/completion/test_completion_events.vader b/test/completion/test_completion_events.vader index f3e05950..3f0bfa70 100644 --- a/test/completion/test_completion_events.vader +++ b/test/completion/test_completion_events.vader @@ -129,6 +129,10 @@ Execute(ale#completion#Show() should remember the omnifunc setting and replace i AssertEqual 'FooBar', b:ale_old_omnifunc AssertEqual 'ale#completion#OmniFunc', &l:omnifunc + AssertEqual [], g:feedkeys_calls + sleep 1ms + AssertEqual [["\<Plug>(ale_show_completion_menu)"]], g:feedkeys_calls + Execute(ale#completion#Show() should remember the completeopt setting and replace it): let &l:completeopt = 'menu' @@ -137,6 +141,10 @@ Execute(ale#completion#Show() should remember the completeopt setting and replac AssertEqual 'menu', b:ale_old_completopt AssertEqual 'menu,menuone,noselect,noinsert', &l:completeopt + AssertEqual [], g:feedkeys_calls + sleep 1ms + AssertEqual [["\<Plug>(ale_show_completion_menu)"]], g:feedkeys_calls + Execute(ale#completion#Show() should set the preview option if it's set): let &l:completeopt = 'menu,preview' @@ -145,6 +153,10 @@ Execute(ale#completion#Show() should set the preview option if it's set): AssertEqual 'menu,preview', b:ale_old_completopt AssertEqual 'menu,menuone,preview,noselect,noinsert', &l:completeopt + AssertEqual [], g:feedkeys_calls + sleep 1ms + AssertEqual [["\<Plug>(ale_show_completion_menu)"]], g:feedkeys_calls + Execute(ale#completion#OmniFunc() should also remember the completeopt setting and replace it): let &l:completeopt = 'menu' @@ -164,6 +176,8 @@ Execute(ale#completion#OmniFunc() should set the preview option if it's set): Execute(ale#completion#Show() should make the correct feedkeys() call): call ale#completion#Show('Response', 'Parser') + AssertEqual [], g:feedkeys_calls + sleep 1ms AssertEqual [["\<Plug>(ale_show_completion_menu)"]], g:feedkeys_calls Execute(ale#completion#Show() shouldn't do anything if you switch back to normal mode): diff --git a/test/completion/test_completion_filtering.vader b/test/completion/test_completion_filtering.vader index ae91a952..ffb313ef 100644 --- a/test/completion/test_completion_filtering.vader +++ b/test/completion/test_completion_filtering.vader @@ -12,16 +12,17 @@ After: Execute(Prefix filtering should work for Lists of strings): AssertEqual \ ['FooBar', 'foo'], - \ ale#completion#Filter(bufnr(''), ['FooBar', 'FongBar', 'baz', 'foo'], 'foo') + \ ale#completion#Filter(bufnr(''), '', ['FooBar', 'FongBar', 'baz', 'foo'], 'foo') AssertEqual \ ['FooBar', 'FongBar', 'baz', 'foo'], - \ ale#completion#Filter(bufnr(''), ['FooBar', 'FongBar', 'baz', 'foo'], '.') + \ ale#completion#Filter(bufnr(''), '', ['FooBar', 'FongBar', 'baz', 'foo'], '.') Execute(Prefix filtering should work for completion items): AssertEqual \ [{'word': 'FooBar'}, {'word': 'foo'}], \ ale#completion#Filter( \ bufnr(''), + \ '', \ [ \ {'word': 'FooBar'}, \ {'word': 'FongBar'}, @@ -40,6 +41,7 @@ Execute(Prefix filtering should work for completion items): \ ], \ ale#completion#Filter( \ bufnr(''), + \ '', \ [ \ {'word': 'FooBar'}, \ {'word': 'FongBar'}, @@ -56,6 +58,7 @@ Execute(Excluding words from completion results should work): \ [{'word': 'Italian'}], \ ale#completion#Filter( \ bufnr(''), + \ '', \ [ \ {'word': 'Italian'}, \ {'word': 'it'}, @@ -67,6 +70,7 @@ Execute(Excluding words from completion results should work): \ [{'word': 'Deutsch'}], \ ale#completion#Filter( \ bufnr(''), + \ '', \ [ \ {'word': 'describe'}, \ {'word': 'Deutsch'}, @@ -78,6 +82,7 @@ Execute(Excluding words from completion results should work): \ [{'word': 'Deutsch'}], \ ale#completion#Filter( \ bufnr(''), + \ '', \ [ \ {'word': 'describe'}, \ {'word': 'Deutsch'}, @@ -90,19 +95,26 @@ Execute(Excluding words from completion results should work with lists of String AssertEqual \ ['Italian'], - \ ale#completion#Filter(bufnr(''), ['Italian', 'it'], 'it') + \ ale#completion#Filter(bufnr(''), '', ['Italian', 'it'], 'it') AssertEqual \ ['Deutsch'], - \ ale#completion#Filter(bufnr(''), ['describe', 'Deutsch'], 'de') + \ ale#completion#Filter(bufnr(''), '', ['describe', 'Deutsch'], 'de') AssertEqual \ ['Deutsch'], - \ ale#completion#Filter(bufnr(''), ['describe', 'Deutsch'], '.') + \ ale#completion#Filter(bufnr(''), '', ['describe', 'Deutsch'], '.') Execute(Filtering shouldn't modify the original list): let b:ale_completion_excluded_words = ['it', 'describe'] let b:suggestions = [{'word': 'describe'}] - AssertEqual [], ale#completion#Filter(bufnr(''), b:suggestions, '.') + AssertEqual [], ale#completion#Filter(bufnr(''), '', b:suggestions, '.') AssertEqual b:suggestions, [{'word': 'describe'}] - AssertEqual [], ale#completion#Filter(bufnr(''), b:suggestions, 'de') + AssertEqual [], ale#completion#Filter(bufnr(''), '', b:suggestions, 'de') AssertEqual b:suggestions, [{'word': 'describe'}] + +Execute(Filtering should respect filetype triggers): + let b:suggestions = [{'word': 'describe'}] + + AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), '', b:suggestions, '.') + AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), 'rust', b:suggestions, '.') + AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), 'rust', b:suggestions, '::') diff --git a/test/completion/test_completion_prefixes.vader b/test/completion/test_completion_prefixes.vader index 0b2cfeaf..3f2cab15 100644 --- a/test/completion/test_completion_prefixes.vader +++ b/test/completion/test_completion_prefixes.vader @@ -43,3 +43,23 @@ Execute(Completion should be done after words in parens in Rust): Execute(Completion should not be done after parens in Rust): AssertEqual '', ale#completion#GetPrefix(&filetype, 3, 15) + +Given lisp(): + (minus-name + (full-name) + +Execute(Completion should be done for function names with minuses in Lisp): + AssertEqual 'minus-name', ale#completion#GetPrefix(&filetype, 1, 12) + +Execute(Completion should not be done after parens in Lisp): + AssertEqual '', ale#completion#GetPrefix(&filetype, 2, 12) + +Given clojure(): + (minus-name + (full-name) + +Execute(Completion should be done for function names with minuses in Clojure): + AssertEqual 'minus-name', ale#completion#GetPrefix(&filetype, 1, 12) + +Execute(Completion should not be done after parens in Clojure): + AssertEqual '', ale#completion#GetPrefix(&filetype, 2, 12) diff --git a/test/completion/test_lsp_completion_messages.vader b/test/completion/test_lsp_completion_messages.vader index ed0f358b..130f31b9 100644 --- a/test/completion/test_lsp_completion_messages.vader +++ b/test/completion/test_lsp_completion_messages.vader @@ -14,17 +14,17 @@ Before: let g:message_list = [] let g:capability_checked = '' + let g:conn_id = v:null let g:Callback = '' let g:wait_callback_list = [] function! ale#lsp_linter#StartLSP(buffer, linter) abort - let l:conn = ale#lsp#NewConnection({}) - let l:conn.id = 347 - let l:conn.open_documents = {a:buffer : -1} + let g:conn_id = ale#lsp#Register('executable', '/foo/bar', {}) + call ale#lsp#MarkDocumentAsOpen(g:conn_id, a:buffer) return { \ 'buffer': a:buffer, - \ 'connection_id': 347, + \ 'connection_id': g:conn_id, \ 'project_root': '/foo/bar', \ 'language_id': 'python', \} @@ -35,7 +35,7 @@ Before: return 'i' endfunction - function! ale#lsp#WaitForCapability(conn_id, project_root, capability, callback) abort + function! ale#lsp#WaitForCapability(conn_id, capability, callback) abort let g:capability_checked = a:capability call add(g:wait_callback_list, a:callback) endfunction @@ -45,7 +45,7 @@ Before: endfunction " Replace the Send function for LSP, so we can monitor calls to it. - function! ale#lsp#Send(conn_id, message, ...) abort + function! ale#lsp#Send(conn_id, message) abort call add(g:message_list, a:message) return 1 @@ -54,9 +54,14 @@ Before: After: Restore + if g:conn_id isnot v:null + call ale#lsp#RemoveConnectionWithID(g:conn_id) + endif + unlet! g:message_list unlet! g:capability_checked unlet! g:wait_callback_list + unlet! g:conn_id unlet! g:Callback unlet! b:ale_old_omnifunc unlet! b:ale_old_completopt @@ -72,7 +77,6 @@ After: return call('mode', a:000) endfunction - call ale#lsp#RemoveConnectionWithID(347) call ale#test#RestoreDirectory() call ale#linter#Reset() @@ -102,7 +106,7 @@ Execute(The right message should be sent for the initial tsserver request): AssertEqual 1, len(g:wait_callback_list) AssertEqual 'completion', g:capability_checked - call map(g:wait_callback_list, 'v:val([347, ''/foo/bar''])') + call map(g:wait_callback_list, 'v:val([g:conn_id, ''/foo/bar''])') " We should send the right callback. AssertEqual @@ -116,7 +120,7 @@ Execute(The right message should be sent for the initial tsserver request): AssertEqual \ { \ 'line_length': 3, - \ 'conn_id': 347, + \ 'conn_id': g:conn_id, \ 'column': 3, \ 'request_id': 1, \ 'line': 1, @@ -189,7 +193,7 @@ Execute(The right message should be sent for the initial LSP request): AssertEqual 1, len(g:wait_callback_list) AssertEqual 'completion', g:capability_checked - call map(g:wait_callback_list, 'v:val([347, ''/foo/bar''])') + call map(g:wait_callback_list, 'v:val([g:conn_id, ''/foo/bar''])') " We should send the right callback. AssertEqual @@ -219,7 +223,7 @@ Execute(The right message should be sent for the initial LSP request): AssertEqual \ { \ 'line_length': 3, - \ 'conn_id': 347, + \ 'conn_id': g:conn_id, \ 'column': 3, \ 'request_id': 1, \ 'line': 1, diff --git a/test/completion/test_lsp_completion_parsing.vader b/test/completion/test_lsp_completion_parsing.vader index d5a45b54..71e53ab6 100644 --- a/test/completion/test_lsp_completion_parsing.vader +++ b/test/completion/test_lsp_completion_parsing.vader @@ -447,3 +447,27 @@ Execute(Should handle missing keys): \ ] \ } \ }) + +Execute(Should handle documentation in the markdown format): + AssertEqual + \ [ + \ {'word': 'migrations', 'menu': 'xxx', 'info': 'Markdown documentation', 'kind': 'f', 'icase': 1}, + \ ], + \ ale#completion#ParseLSPCompletions({ + \ 'jsonrpc': '2.0', + \ 'id': 6, + \ 'result': { + \ 'isIncomplete': v:false, + \ 'items': [ + \ { + \ 'label': 'migrations', + \ 'kind': 3, + \ 'detail': 'xxx', + \ 'documentation': { + \ 'kind': 'markdown', + \ 'value': 'Markdown documentation', + \ }, + \ }, + \ ], + \ }, + \ }) diff --git a/test/completion/test_tsserver_completion_parsing.vader b/test/completion/test_tsserver_completion_parsing.vader index c8e2c993..dbc4f9e2 100644 --- a/test/completion/test_tsserver_completion_parsing.vader +++ b/test/completion/test_tsserver_completion_parsing.vader @@ -32,6 +32,13 @@ Execute(TypeScript completion details responses should be parsed correctly): \ 'kind': 'f', \ 'icase': 1, \ }, + \ { + \ 'word': 'ghi', + \ 'menu': '(class) Foo', + \ 'info': '', + \ 'kind': 'f', + \ 'icase': 1, + \ }, \ ], \ ale#completion#ParseTSServerCompletionEntryDetails({ \ 'body': [ @@ -74,6 +81,17 @@ Execute(TypeScript completion details responses should be parsed correctly): \ {'text': 'baz'}, \ ], \ }, + \ { + \ 'name': 'ghi', + \ 'kind': 'className', + \ 'displayParts': [ + \ {'text': '('}, + \ {'text': 'class'}, + \ {'text': ')'}, + \ {'text': ' '}, + \ {'text': 'Foo'}, + \ ], + \ }, \ ], \}) |