From 8c5081f6316183c97298ec4a819fd94c2a2a9516 Mon Sep 17 00:00:00 2001 From: Horacio Sanson Date: Thu, 4 Mar 2021 20:45:33 +0900 Subject: [PATCH] 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 --- ale_linters/terraform/terraform.vim | 8 +++-- test/handler/test_terraform_handler.vader | 38 +++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/ale_linters/terraform/terraform.vim b/ale_linters/terraform/terraform.vim index 623fc2fd..cf134460 100644 --- a/ale_linters/terraform/terraform.vim +++ b/ale_linters/terraform/terraform.vim @@ -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 diff --git a/test/handler/test_terraform_handler.vader b/test/handler/test_terraform_handler.vader index 64e2e578..73730b0b 100644 --- a/test/handler/test_terraform_handler.vader +++ b/test/handler/test_terraform_handler.vader @@ -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', + \ ' }', + \ ' }', + \ ' }', + \ ' ]', + \ '}' + \ ])