diff options
author | w0rp <devw0rp@gmail.com> | 2017-07-13 22:47:43 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-07-13 22:47:43 +0100 |
commit | b50ae96413ef34c1ab631507d6763e7667fe8c85 (patch) | |
tree | c4159a4570b36972611cfa4fbce93398f0bd4612 | |
parent | f7f6f6541dcc7f05d9c31e116e70cb5067c65afa (diff) | |
download | ale-b50ae96413ef34c1ab631507d6763e7667fe8c85.zip |
#769 Ignore stderr output and output without JSON we can read for rubocop
-rw-r--r-- | ale_linters/ruby/rubocop.vim | 17 | ||||
-rw-r--r-- | test/handler/test_rubocop_handler.vader | 19 |
2 files changed, 14 insertions, 22 deletions
diff --git a/ale_linters/ruby/rubocop.vim b/ale_linters/ruby/rubocop.vim index a539b1ae..eb5b61a3 100644 --- a/ale_linters/ruby/rubocop.vim +++ b/ale_linters/ruby/rubocop.vim @@ -14,22 +14,16 @@ function! ale_linters#ruby#rubocop#GetCommand(buffer) abort endfunction function! ale_linters#ruby#rubocop#Handle(buffer, lines) abort - if empty(a:lines) - return [] - endif - 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"), - \}] + return [] endtry - if l:errors['summary']['offense_count'] == 0 || empty(l:errors['files']) - return [] + if !has_key(l:errors, 'summary') + \|| l:errors['summary']['offense_count'] == 0 + \|| empty(l:errors['files']) + return [] endif let l:output = [] @@ -63,5 +57,4 @@ call ale#linter#Define('ruby', { \ 'executable_callback': 'ale#handlers#rubocop#GetExecutable', \ 'command_callback': 'ale_linters#ruby#rubocop#GetCommand', \ 'callback': 'ale_linters#ruby#rubocop#Handle', -\ 'output_stream': 'both', \}) diff --git a/test/handler/test_rubocop_handler.vader b/test/handler/test_rubocop_handler.vader index a6320014..fffee7bb 100644 --- a/test/handler/test_rubocop_handler.vader +++ b/test/handler/test_rubocop_handler.vader @@ -55,19 +55,18 @@ Execute(The rubocop handler should handle when no files are checked): \ '{"metadata":{"rubocop_version":"0.47.1","ruby_engine":"ruby","ruby_version":"2.1.5","ruby_patchlevel":"273","ruby_platform":"x86_64-linux-gnu"},"files":[],"summary":{"offense_count":0,"target_file_count":0,"inspected_file_count":0}}' \ ]) -Execute(Parse errors should be handled for rubocop): +Execute(The rubocop handler should handle output without any errors): 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) + \ + AssertEqual + \ [], + \ ale_linters#ruby#rubocop#Handle(347, ['{}']) + AssertEqual + \ [], + \ ale_linters#ruby#rubocop#Handle(347, []) |