From 7ed343965cb839263466fa3b3a028a7581d61934 Mon Sep 17 00:00:00 2001 From: Adrian Zalewski Date: Sun, 28 May 2017 21:19:47 +0200 Subject: [PATCH] Ember-template-lint handler: properly handle template parsing errors. --- ale_linters/handlebars/embertemplatelint.vim | 24 ++++++++++++----- .../test_embertemplatelint_handler.vader | 27 +++++++++++++++++++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/ale_linters/handlebars/embertemplatelint.vim b/ale_linters/handlebars/embertemplatelint.vim index bbf7dd90..e7fa149c 100644 --- a/ale_linters/handlebars/embertemplatelint.vim +++ b/ale_linters/handlebars/embertemplatelint.vim @@ -26,13 +26,23 @@ function! ale_linters#handlebars#embertemplatelint#Handle(buffer, lines) abort let l:file_errors = values(l:input_json)[0] for l:error in l:file_errors - call add(l:output, { - \ 'bufnr': a:buffer, - \ 'lnum': l:error.line, - \ 'col': l:error.column, - \ 'text': l:error.rule . ': ' . l:error.message, - \ 'type': l:error.severity == 1 ? 'W' : 'E', - \}) + if has_key(l:error, 'fatal') + call add(l:output, { + \ 'bufnr': a:buffer, + \ 'lnum': 1, + \ 'col': 1, + \ 'text': l:error.message, + \ 'type': l:error.severity == 1 ? 'W' : 'E', + \}) + else + call add(l:output, { + \ 'bufnr': a:buffer, + \ 'lnum': l:error.line, + \ 'col': l:error.column, + \ 'text': l:error.rule . ': ' . l:error.message, + \ 'type': l:error.severity == 1 ? 'W' : 'E', + \}) + endif endfor return l:output diff --git a/test/handler/test_embertemplatelint_handler.vader b/test/handler/test_embertemplatelint_handler.vader index 5261bbe5..cc3e8bb9 100644 --- a/test/handler/test_embertemplatelint_handler.vader +++ b/test/handler/test_embertemplatelint_handler.vader @@ -46,6 +46,33 @@ Execute(The ember-template-lint handler should parse lines correctly): \ ], \ ale_linters#handlebars#embertemplatelint#Handle(347, input_lines) +Execute(The ember-template-lint handler should handle template parsing error correctly): + let input_lines = split('{ + \ "/ember-project/app/templates/application.hbs": [ + \ { + \ "fatal": true, + \ "moduleId": "app/templates/application", + \ "message": "Parse error on line 5 ...", + \ "line": 1, + \ "column": 1, + \ "source": "Error: Parse error on line 5 ...", + \ "severity": 2 + \ } + \ ] + \ }', '\n') + + AssertEqual + \ [ + \ { + \ 'bufnr': 347, + \ 'lnum': 1, + \ 'col': 1, + \ 'text': 'Parse error on line 5 ...', + \ 'type': 'E', + \ }, + \ ], + \ ale_linters#handlebars#embertemplatelint#Handle(347, input_lines) + Execute(The ember-template-lint handler should handle no lint errors/warnings): AssertEqual \ [