diff options
author | w0rp <devw0rp@gmail.com> | 2019-05-17 00:57:52 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2019-05-17 00:57:52 +0100 |
commit | e5ea809094fd1d521ac88516f5b4b6870e656f3a (patch) | |
tree | 942fcf578f129ca4801757fcd82f211751d159c0 /test/completion | |
parent | 8cb6d043b4b2052ad6e5973b2a5804791511fed4 (diff) | |
download | ale-e5ea809094fd1d521ac88516f5b4b6870e656f3a.zip |
Close #2285 - Add a function for use with omnifunc
Diffstat (limited to 'test/completion')
-rw-r--r-- | test/completion/test_completion_events.vader | 14 | ||||
-rw-r--r-- | test/completion/test_omnifunc_completion.vader | 70 |
2 files changed, 79 insertions, 5 deletions
diff --git a/test/completion/test_completion_events.vader b/test/completion/test_completion_events.vader index cdd3fea4..ebdcb5df 100644 --- a/test/completion/test_completion_events.vader +++ b/test/completion/test_completion_events.vader @@ -139,7 +139,7 @@ Execute(ale#completion#Show() should remember the omnifunc setting and replace i call ale#completion#Show('Response', 'Parser') AssertEqual 'FooBar', b:ale_old_omnifunc - AssertEqual 'ale#completion#OmniFunc', &l:omnifunc + AssertEqual 'ale#completion#AutomaticOmniFunc', &l:omnifunc AssertEqual [], g:feedkeys_calls sleep 1ms @@ -184,20 +184,20 @@ Execute(ale#completion#Show() should not replace the completeopt setting for man sleep 1ms AssertEqual [["\<Plug>(ale_show_completion_menu)"]], g:feedkeys_calls -Execute(ale#completion#OmniFunc() should also remember the completeopt setting and replace it): +Execute(ale#completion#AutomaticOmniFunc() should also remember the completeopt setting and replace it): let &l:completeopt = 'menu' let b:ale_completion_info = {'source': 'ale-automatic'} - call ale#completion#OmniFunc(0, '') + call ale#completion#AutomaticOmniFunc(0, '') AssertEqual 'menu', b:ale_old_completeopt AssertEqual 'menu,menuone,noselect,noinsert', &l:completeopt -Execute(ale#completion#OmniFunc() should set the preview option if it's set): +Execute(ale#completion#AutomaticOmniFunc() should set the preview option if it's set): let &l:completeopt = 'menu,preview' let b:ale_completion_info = {'source': 'ale-automatic'} - call ale#completion#OmniFunc(0, '') + call ale#completion#AutomaticOmniFunc(0, '') AssertEqual 'menu,preview', b:ale_old_completeopt AssertEqual 'menu,menuone,preview,noselect,noinsert', &l:completeopt @@ -317,6 +317,8 @@ Execute(b:ale_completion_info should be set up correctly when requesting complet Execute(b:ale_completion_info should be set up correctly for other sources): let b:ale_completion_result = [] + let b:ale_completion_response = [] + let b:ale_completion_parser = 'type' call setpos('.', [bufnr(''), 3, 14, 0]) call ale#completion#GetCompletions('deoplete') @@ -332,6 +334,8 @@ Execute(b:ale_completion_info should be set up correctly for other sources): \ }, \ b:ale_completion_info Assert !exists('b:ale_completion_result') + Assert !exists('b:ale_completion_response') + Assert !exists('b:ale_completion_parser') Execute(The correct keybinds should be configured): redir => g:output diff --git a/test/completion/test_omnifunc_completion.vader b/test/completion/test_omnifunc_completion.vader new file mode 100644 index 00000000..221d337f --- /dev/null +++ b/test/completion/test_omnifunc_completion.vader @@ -0,0 +1,70 @@ +Before: + unlet! b:ale_completion_info + unlet! b:ale_completion_response + unlet! b:ale_completion_parser + unlet! b:ale_completion_result + + let b:lsp_started = 0 + + runtime autoload/ale/lsp_linter.vim + + function! ale#lsp_linter#StartLSP(buffer, linter, Callback) abort + return b:lsp_started + endfunction + + function! Identity(x) abort + return a:x + endfunction + + function! SetCompletionResult(...) abort + let b:ale_completion_result = ['foo'] + endfunction + + function! SetCompletionResponse(...) abort + let b:ale_completion_response = ['foo'] + let b:ale_completion_parser = 'Identity' + endfunction + +After: + unlet! b:ale_completion_info + unlet! b:ale_completion_response + unlet! b:ale_completion_parser + unlet! b:ale_completion_result + unlet! b:lsp_started + + delfunction Identity + delfunction SetCompletionResult + delfunction SetCompletionResponse + + runtime autoload/ale/lsp_linter.vim + + call ale#linter#Reset() + +Given typescript(): + let abc = y. + let foo = ab + let foo = (ab) + +Execute(-3 should be returned when completion results cannot be requested): + AssertEqual -3, ale#completion#OmniFunc(1, '') + +Execute(The start position should be returned when results can be requested): + let b:lsp_started = 1 + call setpos('.', [bufnr(''), 3, 14, 0]) + + AssertEqual 11, ale#completion#OmniFunc(1, '') + +Execute(The omnifunc function should return async results): + " Neovim 0.2.0 struggles at running these tests. + if !has('nvim') || has('nvim-0.3.0') + call timer_start(0, function('SetCompletionResult')) + + AssertEqual ['foo'], ale#completion#OmniFunc(0, '') + endif + +Execute(The omnifunc function should parse and return async responses): + if !has('nvim') || has('nvim-0.3.0') + call timer_start(0, function('SetCompletionResponse')) + + AssertEqual ['foo'], ale#completion#OmniFunc(0, '') + endif |