summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorw0rp <w0rp@users.noreply.github.com>2019-05-24 01:21:02 +0100
committerGitHub <noreply@github.com>2019-05-24 01:21:02 +0100
commitbb08b81bf719d4c55669c583c65fbe4bbd795501 (patch)
tree4a8360cf2bd1ff5bf816106bc0cccf7436cd3c76 /test
parent1a9b8a58c7e01f0926e51b39b7b37f932537cc0c (diff)
parent36c35d840ba90c5069eb514d54a1281d42c3fb26 (diff)
downloadale-bb08b81bf719d4c55669c583c65fbe4bbd795501.zip
Merge pull request #2524 from hsanson/2521-fix-lsp-diagnostics-buffer-match
WIP Fix HandleLSPDiagnostics buffer match logic.
Diffstat (limited to 'test')
-rw-r--r--test/lsp/test_did_save_event.vader1
-rw-r--r--test/lsp/test_engine_lsp_response_handling.vader (renamed from test/test_engine_lsp_response_handling.vader)168
-rw-r--r--test/test_history_saving.vader3
-rw-r--r--test/test_ignoring_linters.vader12
4 files changed, 179 insertions, 5 deletions
diff --git a/test/lsp/test_did_save_event.vader b/test/lsp/test_did_save_event.vader
index 1a60bc9f..bdea6d98 100644
--- a/test/lsp/test_did_save_event.vader
+++ b/test/lsp/test_did_save_event.vader
@@ -9,6 +9,7 @@ Before:
call ale#test#SetFilename('dummy.txt')
runtime autoload/ale/lsp.vim
+ runtime autoload/ale/lsp_linter.vim
let g:ale_disable_lsp = 0
unlet! b:ale_disable_lsp
diff --git a/test/test_engine_lsp_response_handling.vader b/test/lsp/test_engine_lsp_response_handling.vader
index 84febe39..9abfa087 100644
--- a/test/test_engine_lsp_response_handling.vader
+++ b/test/lsp/test_engine_lsp_response_handling.vader
@@ -1,19 +1,42 @@
Before:
+ Save g:ale_set_lists_synchronously
Save g:ale_buffer_info
Save g:ale_lsp_error_messages
+ Save g:ale_set_loclist
+ Save g:ale_set_signs
+ Save g:ale_set_quickfix
+ Save g:ale_set_highlights
+ Save g:ale_echo_cursor
+ Save g:ale_disable_lsp
+ Save g:ale_history_enabled
+ Save g:ale_history_log_output
+ let g:ale_disable_lsp = 0
+ let g:ale_set_lists_synchronously = 1
let g:ale_buffer_info = {}
+ let g:ale_set_loclist = 1
+ " Disable features we don't need for these tests.
+ let g:ale_set_signs = 0
+ let g:ale_set_quickfix = 0
+ let g:ale_set_highlights = 0
+ let g:ale_echo_cursor = 0
+ let g:ale_history_enabled = 1
+ let g:ale_history_log_output = 1
unlet! g:ale_lsp_error_messages
unlet! b:ale_linters
+ unlet! b:ale_disable_lsp
+ call ale#linter#Reset()
call ale#test#SetDirectory('/testplugin/test')
+ call setloclist(0, [])
After:
Restore
unlet! b:ale_linters
+ call setloclist(0, [])
call ale#test#RestoreDirectory()
call ale#linter#Reset()
call ale#lsp_linter#ClearLSPData()
@@ -92,6 +115,35 @@ Execute(tsserver syntax error responses should be handled correctly):
\ ],
\ ale#test#GetLoclistWithoutModule()
+ " Syntax errors on the project root should not populate the LocList.
+ call ale#lsp_linter#HandleLSPResponse(1, {
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'syntaxDiag',
+ \ 'body': {
+ \ 'file': g:dir,
+ \ 'diagnostics':[
+ \ {
+ \ 'start': {
+ \ 'line':2,
+ \ 'offset':14,
+ \ },
+ \ 'end': {
+ \ 'line':2,
+ \ 'offset':15,
+ \ },
+ \ 'text': ''','' expected.',
+ \ "code":1005
+ \ },
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ ],
+ \ ale#test#GetLoclistWithoutModule()
+
Execute(tsserver semantic error responses should be handled correctly):
runtime ale_linters/typescript/tsserver.vim
call ale#test#SetFilename('filename.ts')
@@ -165,6 +217,35 @@ Execute(tsserver semantic error responses should be handled correctly):
\ ],
\ ale#test#GetLoclistWithoutModule()
+ " Semantic errors on the project root should not populate the LocList.
+ call ale#lsp_linter#HandleLSPResponse(1, {
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'semanticDiag',
+ \ 'body': {
+ \ 'file': g:dir,
+ \ 'diagnostics':[
+ \ {
+ \ 'start': {
+ \ 'line':2,
+ \ 'offset':14,
+ \ },
+ \ 'end': {
+ \ 'line':2,
+ \ 'offset':15,
+ \ },
+ \ 'text': 'Some semantic error',
+ \ "code":1005
+ \ },
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ ],
+ \ ale#test#GetLoclistWithoutModule()
+
Execute(tsserver errors should mark tsserver no longer active):
let b:ale_linters = ['tsserver']
runtime ale_linters/typescript/tsserver.vim
@@ -186,6 +267,93 @@ Execute(tsserver errors should mark tsserver no longer active):
AssertEqual [], g:ale_buffer_info[bufnr('')].active_linter_list
+Execute(LSP diagnostics responses should be handled correctly):
+ let b:ale_linters = ['eclipselsp']
+ runtime ale_linters/java/eclipselsp.vim
+ call ale#test#SetFilename('filename.java')
+ call ale#engine#InitBufferInfo(bufnr(''))
+ call ale#lsp_linter#SetLSPLinterMap({'1': 'eclipselsp'})
+
+ call ale#lsp_linter#HandleLSPResponse(1, {
+ \ 'jsonrpc':'2.0',
+ \ 'method':'textDocument/publishDiagnostics',
+ \ 'params': {
+ \ 'uri':'file://' . g:dir . '/filename.java',
+ \ 'diagnostics': [
+ \ {
+ \ 'range': {
+ \ 'start': {
+ \ 'line': 0,
+ \ 'character':0
+ \ },
+ \ 'end': {
+ \ 'line': 0,
+ \ 'character':0
+ \ }
+ \ },
+ \ 'severity': 2,
+ \ 'code': "",
+ \ 'source': 'Java',
+ \ 'message': 'Missing JRE 1-8'
+ \ }
+ \ ]
+ \ }
+ \})
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 1,
+ \ 'bufnr': bufnr(''),
+ \ 'col': 1,
+ \ 'pattern': '',
+ \ 'valid': 1,
+ \ 'vcol': 0,
+ \ 'nr': -1,
+ \ 'type': 'W',
+ \ 'text': 'Missing JRE 1-8'
+ \ }
+ \ ],
+ \ ale#test#GetLoclistWithoutModule()
+
+Execute(LSP diagnostics responses on project root should not populate loclist):
+ let b:ale_linters = ['eclipselsp']
+ runtime ale_linters/java/eclipselsp.vim
+ call ale#test#SetFilename('filename.java')
+ call ale#engine#InitBufferInfo(bufnr(''))
+ call ale#lsp_linter#SetLSPLinterMap({'1': 'eclipselsp'})
+
+ call ale#lsp_linter#HandleLSPResponse(1, {
+ \ 'jsonrpc':'2.0',
+ \ 'method':'textDocument/publishDiagnostics',
+ \ 'params': {
+ \ 'uri':'file://' . g:dir,
+ \ 'diagnostics': [
+ \ {
+ \ 'range': {
+ \ 'start': {
+ \ 'line': 0,
+ \ 'character':0
+ \ },
+ \ 'end': {
+ \ 'line': 0,
+ \ 'character':0
+ \ }
+ \ },
+ \ 'severity': 2,
+ \ 'code': "",
+ \ 'source': 'Java',
+ \ 'message': 'Missing JRE 1-8'
+ \ }
+ \ ]
+ \ }
+ \})
+
+ AssertEqual
+ \ [
+ \ ],
+ \ ale#test#GetLoclistWithoutModule()
+
Execute(LSP errors should mark linters no longer active):
let b:ale_linters = ['pyls']
runtime ale_linters/python/pyls.vim
diff --git a/test/test_history_saving.vader b/test/test_history_saving.vader
index 18b64db5..5d81c2a3 100644
--- a/test/test_history_saving.vader
+++ b/test/test_history_saving.vader
@@ -1,5 +1,6 @@
Before:
Save g:ale_max_buffer_history_size
+ Save g:ale_history_enabled
Save g:ale_history_log_output
Save g:ale_run_synchronously
Save g:ale_enabled
@@ -54,8 +55,6 @@ After:
" Reset the shell back to what it was before.
let &shell = g:current_shell
unlet g:current_shell
- let g:ale_history_enabled = 1
- let g:ale_history_log_output = 0
unlet g:history
call ale#engine#Cleanup(bufnr(''))
diff --git a/test/test_ignoring_linters.vader b/test/test_ignoring_linters.vader
index f2e9e5c9..d758af5c 100644
--- a/test/test_ignoring_linters.vader
+++ b/test/test_ignoring_linters.vader
@@ -1,3 +1,11 @@
+Before:
+ Save g:ale_disable_lsp
+
+After:
+ Restore
+
+ unlet! b:ale_disable_lsp
+
Execute(GetList should ignore some invalid values):
AssertEqual [], ale#engine#ignore#GetList('', 'foo')
AssertEqual [], ale#engine#ignore#GetList('', 0)
@@ -98,7 +106,6 @@ Execute(Exclude should handle Dictionaries):
\ )
Execute(Exclude should filter LSP linters when g:ale_disable_lsp is set to 1):
- let g:ale_disable_lsp = 1
AssertEqual
\ [
\ {'name': 'linter1', 'aliases': [], 'lsp': ''},
@@ -116,7 +123,6 @@ Execute(Exclude should filter LSP linters when g:ale_disable_lsp is set to 1):
\ )
Execute(Exclude should filter LSP linters when b:ale_disable_lsp is set to 1):
- let b:ale_disable_lsp = 1
AssertEqual
\ [
\ {'name': 'linter1', 'aliases': [], 'lsp': ''},
@@ -351,7 +357,7 @@ Execute(ale_disable_lsp should be applied for tsserver):
AssertEqual [], g:loclist
-Execute(ale_disable_lsp should be applied for LSP linters):
+Execute(ale_disable_lsp should be applied for LSP linters):
call ale#test#SetFilename('filename.py')
call ale#engine#InitBufferInfo(bufnr(''))
call ale#lsp_linter#SetLSPLinterMap({'347': 'lsplinter'})