summaryrefslogtreecommitdiff
path: root/test/test_engine_lsp_response_handling.vader
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-07-27 13:24:28 +0100
committerw0rp <devw0rp@gmail.com>2017-07-27 13:24:32 +0100
commit63b9d9e9df9811eec3470e38b234cd2d959169eb (patch)
treeb267b7c73039342e33eb036893c2076b5fa5bc5d /test/test_engine_lsp_response_handling.vader
parentfa33faad9ed6da220394bd2abec2e1bdcd19edba (diff)
downloadale-63b9d9e9df9811eec3470e38b234cd2d959169eb.zip
Fix #798 - Handle syntax errors for tsserver
Diffstat (limited to 'test/test_engine_lsp_response_handling.vader')
-rw-r--r--test/test_engine_lsp_response_handling.vader155
1 files changed, 155 insertions, 0 deletions
diff --git a/test/test_engine_lsp_response_handling.vader b/test/test_engine_lsp_response_handling.vader
new file mode 100644
index 00000000..1f766baf
--- /dev/null
+++ b/test/test_engine_lsp_response_handling.vader
@@ -0,0 +1,155 @@
+Before:
+ Save g:ale_buffer_info
+ call ale#test#SetDirectory('/testplugin/test')
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+ call ale#linter#Reset()
+
+Execute(tsserver syntax error responses should be handled correctly):
+ runtime ale_linters/typescript/tsserver.vim
+ call ale#test#SetFilename('filename.ts')
+ call ale#engine#InitBufferInfo(bufnr(''))
+
+ " When we get syntax errors and no semantic errors, we should keep the
+ " syntax errors.
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'syntaxDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ {
+ \ 'start': {
+ \ 'line':2,
+ \ 'offset':14,
+ \ },
+ \ 'end': {
+ \ 'line':2,
+ \ 'offset':15,
+ \ },
+ \ 'text': ''','' expected.',
+ \ "code":1005
+ \ },
+ \ ],
+ \ },
+ \})
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'semanticDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 1,
+ \ 'bufnr': bufnr(''),
+ \ 'col': 14,
+ \ 'vcol': 0,
+ \ 'nr': 1005,
+ \ 'type': 'E',
+ \ 'text': ''','' expected.',
+ \ 'valid': 1,
+ \ 'pattern': '',
+ \ },
+ \ ],
+ \ getloclist(0)
+
+ " After we get empty syntax errors, we should clear them.
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'syntaxDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ ],
+ \ getloclist(0)
+
+Execute(tsserver semantic error responses should be handled correctly):
+ runtime ale_linters/typescript/tsserver.vim
+ call ale#test#SetFilename('filename.ts')
+ call ale#engine#InitBufferInfo(bufnr(''))
+
+ " When we get syntax errors and no semantic errors, we should keep the
+ " syntax errors.
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'syntaxDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ ],
+ \ },
+ \})
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'semanticDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ {
+ \ 'start': {
+ \ 'line':2,
+ \ 'offset':14,
+ \ },
+ \ 'end': {
+ \ 'line':2,
+ \ 'offset':15,
+ \ },
+ \ 'text': 'Some semantic error',
+ \ "code":1005
+ \ },
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 1,
+ \ 'bufnr': bufnr(''),
+ \ 'col': 14,
+ \ 'vcol': 0,
+ \ 'nr': 1005,
+ \ 'type': 'E',
+ \ 'text': 'Some semantic error',
+ \ 'valid': 1,
+ \ 'pattern': '',
+ \ },
+ \ ],
+ \ getloclist(0)
+
+ " After we get empty syntax errors, we should clear them.
+ call ale#engine#HandleLSPResponse({
+ \ 'seq': 0,
+ \ 'type': 'event',
+ \ 'event': 'semanticDiag',
+ \ 'body': {
+ \ 'file': g:dir . '/filename.ts',
+ \ 'diagnostics':[
+ \ ],
+ \ },
+ \})
+
+ AssertEqual
+ \ [
+ \ ],
+ \ getloclist(0)