summaryrefslogtreecommitdiff
path: root/test/lsp/test_did_save_event.vader
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2018-01-19 16:50:04 +0000
committerw0rp <devw0rp@gmail.com>2018-01-19 16:50:04 +0000
commita5ec4143d2ed0527649d4143e244b62b9f879661 (patch)
treeccb5afba9cb07e95e040f01f600b0b74ff59ab24 /test/lsp/test_did_save_event.vader
parent042dec059a3da01477cbc76e9893973dd374872d (diff)
downloadale-a5ec4143d2ed0527649d4143e244b62b9f879661.zip
Fix the didSave tests so they work in NeoVim 0.1.7, and do not send the message for tsserver
Diffstat (limited to 'test/lsp/test_did_save_event.vader')
-rw-r--r--test/lsp/test_did_save_event.vader108
1 files changed, 108 insertions, 0 deletions
diff --git a/test/lsp/test_did_save_event.vader b/test/lsp/test_did_save_event.vader
new file mode 100644
index 00000000..042a3ce2
--- /dev/null
+++ b/test/lsp/test_did_save_event.vader
@@ -0,0 +1,108 @@
+Before:
+ Save g:ale_lint_on_save
+ Save g:ale_enabled
+ Save g:ale_linters
+ Save g:ale_run_synchronously
+
+ call ale#test#SetDirectory('/testplugin/test/completion')
+ call ale#test#SetFilename('dummy.txt')
+
+ runtime autoload/ale/lsp.vim
+
+ let g:ale_lint_on_save = 1
+ let b:ale_enabled = 1
+ let g:ale_lsp_next_message_id = 1
+ let g:ale_run_synchronously = 1
+ let g:message_list = []
+ let g:Callback = ''
+
+ function! LanguageCallback() abort
+ return 'foobar'
+ endfunction
+
+ function! ProjectRootCallback() abort
+ return expand('.')
+ endfunction
+
+ call ale#linter#Define('foobar', {
+ \ 'name': 'dummy_linter',
+ \ 'lsp': 'stdio',
+ \ 'command': 'cat - > /dev/null',
+ \ 'executable': has('win32') ? 'cmd' : 'echo',
+ \ 'language_callback': 'LanguageCallback',
+ \ 'project_root_callback': 'ProjectRootCallback',
+ \ })
+ let g:ale_linters = {'foobar': ['dummy_linter']}
+
+ function! ale#linter#StartLSP(buffer, linter, callback) abort
+ let g:Callback = a:callback
+
+ return {
+ \ 'connection_id': 347,
+ \ 'project_root': '/foo/bar',
+ \}
+ endfunction
+
+ " Replace the Send function for LSP, so we can monitor calls to it.
+ function! ale#lsp#Send(conn_id, message, ...) abort
+ call add(g:message_list, a:message)
+ endfunction
+
+After:
+ Restore
+
+ unlet! b:ale_enabled
+ unlet! b:ale_linters
+ unlet! g:Callback
+ unlet! g:message_list
+
+ delfunction LanguageCallback
+ delfunction ProjectRootCallback
+
+ call ale#test#RestoreDirectory()
+ call ale#linter#Reset()
+
+ " Stop any timers we left behind.
+ " This stops the tests from failing randomly.
+ call ale#completion#StopTimer()
+
+ runtime autoload/ale/completion.vim
+ runtime autoload/ale/lsp.vim
+
+Given foobar (Some imaginary filetype):
+ <contents>
+
+Execute(Server should be notified on save):
+ call ale#events#SaveEvent(bufnr(''))
+
+ AssertEqual
+ \ [
+ \ [1, 'textDocument/didChange', {
+ \ 'textDocument': {
+ \ 'uri': ale#path#ToURI(expand('%:p')),
+ \ 'version': g:ale_lsp_next_version_id - 1,
+ \ },
+ \ 'contentChanges': [{'text': join(getline(1, '$'), "\n") . "\n"}],
+ \ }],
+ \ [1, 'textDocument/didSave', {
+ \ 'textDocument': {
+ \ 'uri': ale#path#ToURI(expand('%:p')),
+ \ },
+ \ }],
+ \ ],
+ \ g:message_list
+
+Execute(Server should be notified on change):
+ call ale#events#FileChangedEvent(bufnr(''))
+
+ AssertEqual
+ \ [
+ \ [1, 'textDocument/didChange', {
+ \ 'textDocument': {
+ \ 'uri': ale#path#ToURI(expand('%:p')),
+ \ 'version': g:ale_lsp_next_version_id - 1,
+ \ },
+ \ 'contentChanges': [{'text': join(getline(1, '$'), "\n") . "\n"}],
+ \ }],
+ \ ],
+ \ g:message_list