Close #791 - Handle exceptions for puglint
This commit is contained in:
parent
70604828fa
commit
07b596efb5
2 changed files with 60 additions and 1 deletions
|
@ -31,6 +31,20 @@ function! ale_linters#pug#puglint#GetCommand(buffer) abort
|
||||||
\ . ' -r inline %t'
|
\ . ' -r inline %t'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#pug#puglint#Handle(buffer, lines) abort
|
||||||
|
for l:line in a:lines[:10]
|
||||||
|
if l:line =~# '^SyntaxError: '
|
||||||
|
return [{
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'text': 'puglint configuration error (type :ALEDetail for more information)',
|
||||||
|
\ 'detail': join(a:lines, "\n"),
|
||||||
|
\}]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return ale#handlers#unix#HandleAsError(a:buffer, a:lines)
|
||||||
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('pug', {
|
call ale#linter#Define('pug', {
|
||||||
\ 'name': 'puglint',
|
\ 'name': 'puglint',
|
||||||
\ 'executable': {b -> ale#node#FindExecutable(b, 'pug_puglint', [
|
\ 'executable': {b -> ale#node#FindExecutable(b, 'pug_puglint', [
|
||||||
|
@ -38,5 +52,5 @@ call ale#linter#Define('pug', {
|
||||||
\ ])},
|
\ ])},
|
||||||
\ 'output_stream': 'stderr',
|
\ 'output_stream': 'stderr',
|
||||||
\ 'command': function('ale_linters#pug#puglint#GetCommand'),
|
\ 'command': function('ale_linters#pug#puglint#GetCommand'),
|
||||||
\ 'callback': 'ale#handlers#unix#HandleAsError',
|
\ 'callback': 'ale_linters#pug#puglint#Handle',
|
||||||
\})
|
\})
|
||||||
|
|
45
test/handler/test_puglint_handler.vader
Normal file
45
test/handler/test_puglint_handler.vader
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
Before:
|
||||||
|
runtime ale_linters/pug/puglint.vim
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#linter#Reset()
|
||||||
|
|
||||||
|
Execute(Regular errors should be handled):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'col': 5,
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ 'text': 'Static attribute "class" must be written as class literal',
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#pug#puglint#Handle(0, [
|
||||||
|
\ '/tmp/vwYwsJA/233/test.pug:1:5 Static attribute "class" must be written as class literal',
|
||||||
|
\ ])
|
||||||
|
|
||||||
|
Execute(syntax errors in the configuration file should be handled):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'text': 'puglint configuration error (type :ALEDetail for more information)',
|
||||||
|
\ 'detail': join(
|
||||||
|
\ [
|
||||||
|
\ 'undefined:2',
|
||||||
|
\ ' disallowClassAttributeWithStaticValue: true',
|
||||||
|
\ ' ^',
|
||||||
|
\ 'SyntaxError: Unexpected token d in JSON at position 4',
|
||||||
|
\ ' at JSON.parse (<anonymous>)',
|
||||||
|
\ ],
|
||||||
|
\ "\n"
|
||||||
|
\ ),
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#pug#puglint#Handle(0, [
|
||||||
|
\ 'undefined:2',
|
||||||
|
\ ' disallowClassAttributeWithStaticValue: true',
|
||||||
|
\ ' ^',
|
||||||
|
\ 'SyntaxError: Unexpected token d in JSON at position 4',
|
||||||
|
\ ' at JSON.parse (<anonymous>)',
|
||||||
|
\ ])
|
Reference in a new issue