Fix #760 - Report problems with configuration files for rubocop
This commit is contained in:
parent
bc32e24203
commit
5885954197
2 changed files with 34 additions and 6 deletions
|
@ -14,11 +14,19 @@ function! ale_linters#ruby#rubocop#GetCommand(buffer) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#ruby#rubocop#Handle(buffer, lines) abort
|
function! ale_linters#ruby#rubocop#Handle(buffer, lines) abort
|
||||||
if len(a:lines) == 0
|
if empty(a:lines)
|
||||||
return []
|
return []
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:errors = json_decode(a:lines[0])
|
try
|
||||||
|
let l:errors = json_decode(a:lines[0])
|
||||||
|
catch
|
||||||
|
return [{
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'text': 'rubocop configuration error (type :ALEDetail for more information)',
|
||||||
|
\ 'detail': join(a:lines, "\n"),
|
||||||
|
\}]
|
||||||
|
endtry
|
||||||
|
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
|
@ -51,4 +59,5 @@ call ale#linter#Define('ruby', {
|
||||||
\ 'executable_callback': 'ale#handlers#rubocop#GetExecutable',
|
\ 'executable_callback': 'ale#handlers#rubocop#GetExecutable',
|
||||||
\ 'command_callback': 'ale_linters#ruby#rubocop#GetCommand',
|
\ 'command_callback': 'ale_linters#ruby#rubocop#GetCommand',
|
||||||
\ 'callback': 'ale_linters#ruby#rubocop#Handle',
|
\ 'callback': 'ale_linters#ruby#rubocop#Handle',
|
||||||
|
\ 'output_stream': 'both',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
Execute(The rubocop handler should parse lines correctly):
|
Before:
|
||||||
runtime ale_linters/ruby/rubocop.vim
|
runtime ale_linters/ruby/rubocop.vim
|
||||||
|
|
||||||
|
After:
|
||||||
|
unlet! g:lines
|
||||||
|
call ale#linter#Reset()
|
||||||
|
|
||||||
|
Execute(The rubocop handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
|
@ -36,5 +41,19 @@ Execute(The rubocop handler should parse lines correctly):
|
||||||
\ '{"metadata":{"rubocop_version":"0.47.1","ruby_engine":"ruby","ruby_version":"2.1.5","ruby_patchlevel":"273","ruby_platform":"x86_64-linux-gnu"},"files":[{"path":"my_great_file.rb","offenses":[{"severity":"convention","message":"Prefer single-quoted strings...","cop_name":"Style/SomeCop","corrected":false,"location":{"line":83,"column":29,"length":7}},{"severity":"fatal","message":"Some error","cop_name":"Style/SomeOtherCop","corrected":false,"location":{"line":12,"column":2,"length":1}},{"severity":"warning","message":"Regular warning","cop_name":"Style/WarningCop","corrected":false,"location":{"line":10,"column":5,"length":8}},{"severity":"error","message":"Another error","cop_name":"Style/SpaceBeforeBlockBraces","corrected":false,"location":{"line":11,"column":1,"length":1}}]}],"summary":{"offense_count":4,"target_file_count":1,"inspected_file_count":1}}'
|
\ '{"metadata":{"rubocop_version":"0.47.1","ruby_engine":"ruby","ruby_version":"2.1.5","ruby_patchlevel":"273","ruby_platform":"x86_64-linux-gnu"},"files":[{"path":"my_great_file.rb","offenses":[{"severity":"convention","message":"Prefer single-quoted strings...","cop_name":"Style/SomeCop","corrected":false,"location":{"line":83,"column":29,"length":7}},{"severity":"fatal","message":"Some error","cop_name":"Style/SomeOtherCop","corrected":false,"location":{"line":12,"column":2,"length":1}},{"severity":"warning","message":"Regular warning","cop_name":"Style/WarningCop","corrected":false,"location":{"line":10,"column":5,"length":8}},{"severity":"error","message":"Another error","cop_name":"Style/SpaceBeforeBlockBraces","corrected":false,"location":{"line":11,"column":1,"length":1}}]}],"summary":{"offense_count":4,"target_file_count":1,"inspected_file_count":1}}'
|
||||||
\ ])
|
\ ])
|
||||||
|
|
||||||
After:
|
Execute(Parse errors should be handled for rubocop):
|
||||||
call ale#linter#Reset()
|
let g:lines = [
|
||||||
|
\ '/my/project/.rubocop.yml: Layout/MultilineOperationIndentation has the wrong namespace - should be Style',
|
||||||
|
\ '/my/project/.rubocop.yml: Layout/AlignHash has the wrong namespace - should be Style',
|
||||||
|
\ '{"metadata":{"rubocop_version":"0.48.1","ruby_engine":"ruby","ruby_version":"2.4.1","ruby_patchlevel":"111","ruby_platform":"x86_64-darwin16"},"files":[]}',
|
||||||
|
\]
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'text': 'rubocop configuration error (type :ALEDetail for more information)',
|
||||||
|
\ 'detail': join(g:lines, "\n"),
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#ruby#rubocop#Handle(347, g:lines)
|
||||||
|
|
Reference in a new issue