summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-07-13 22:47:43 +0100
committerw0rp <devw0rp@gmail.com>2017-07-13 22:47:43 +0100
commitb50ae96413ef34c1ab631507d6763e7667fe8c85 (patch)
treec4159a4570b36972611cfa4fbce93398f0bd4612
parentf7f6f6541dcc7f05d9c31e116e70cb5067c65afa (diff)
downloadale-b50ae96413ef34c1ab631507d6763e7667fe8c85.zip
#769 Ignore stderr output and output without JSON we can read for rubocop
-rw-r--r--ale_linters/ruby/rubocop.vim17
-rw-r--r--test/handler/test_rubocop_handler.vader19
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, [])