Fix 3605 - set fallback for error detail (#3606)

* Fix 3605 - set fallback for error detail

* Add use case with no detail key

Co-authored-by: Horacio Sanson <horacio@allm.inc>
This commit is contained in:
Horacio Sanson 2021-03-04 20:45:33 +09:00 committed by GitHub
parent 826878c41e
commit 8c5081f631
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 2 deletions

View File

@ -20,6 +20,10 @@ function! ale_linters#terraform#terraform#GetType(severity) abort
return 'E'
endfunction
function! ale_linters#terraform#terraform#GetDetail(error) abort
return get(a:error, 'detail', get(a:error, 'summary', ''))
endfunction
function! ale_linters#terraform#terraform#Handle(buffer, lines) abort
let l:output = []
@ -33,7 +37,7 @@ function! ale_linters#terraform#terraform#Handle(buffer, lines) abort
\ 'filename': ale#path#GetAbsPath(l:dir, l:error['range']['filename']),
\ 'lnum': l:error['range']['start']['line'],
\ 'col': l:error['range']['start']['column'],
\ 'text': l:error['detail'],
\ 'text': ale_linters#terraform#terraform#GetDetail(l:error),
\ 'type': ale_linters#terraform#terraform#GetType(l:error['severity']),
\})
else
@ -41,7 +45,7 @@ function! ale_linters#terraform#terraform#Handle(buffer, lines) abort
\ 'filename': l:file,
\ 'lnum': 0,
\ 'col': 0,
\ 'text': l:error['detail'],
\ 'text': ale_linters#terraform#terraform#GetDetail(l:error),
\ 'type': ale_linters#terraform#terraform#GetType(l:error['severity']),
\})
endif

View File

@ -59,3 +59,41 @@ Execute(The output should be correct):
\ ' ]',
\ '}',
\ ])
Execute(Should use summary if detail not available):
AssertEqual
\ [
\ {
\ 'lnum': 91,
\ 'col': 41,
\ 'filename': ale#path#Simplify(g:dir . '/main.tf'),
\ 'type': 'E',
\ 'text': 'storage_os_disk: required field is not set',
\ }
\ ],
\ ale_linters#terraform#terraform#Handle(bufnr(''), [
\ '{',
\ ' "valid": false,',
\ ' "error_count": 1,',
\ ' "warning_count": 0,',
\ ' "diagnostics": [',
\ ' {',
\ ' "severity": "error",',
\ ' "summary": "storage_os_disk: required field is not set",',
\ ' "range": {',
\ ' "filename": "main.tf",',
\ ' "start": {',
\ ' "line": 91,',
\ ' "column": 41,',
\ ' "byte": 2381',
\ ' },',
\ ' "end": {',
\ ' "line": 91,',
\ ' "column": 41,',
\ ' "byte": 2381',
\ ' }',
\ ' }',
\ ' }',
\ ' ]',
\ '}'
\ ])