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'
|
||||
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', {
|
||||
\ 'name': 'puglint',
|
||||
\ 'executable': {b -> ale#node#FindExecutable(b, 'pug_puglint', [
|
||||
|
@ -38,5 +52,5 @@ call ale#linter#Define('pug', {
|
|||
\ ])},
|
||||
\ 'output_stream': 'stderr',
|
||||
\ '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