diff options
author | Dave Wongillies <davewongillies@users.noreply.github.com> | 2017-12-02 04:29:17 -0800 |
---|---|---|
committer | w0rp <w0rp@users.noreply.github.com> | 2017-12-02 12:29:17 +0000 |
commit | 2bd966c5cc33b8b19570a7978845c2786da62363 (patch) | |
tree | e31354e859427000b0782c882dac37677eeb7d02 | |
parent | f5fc746d00a8b8e0aaac1904ce97ad7eb52e1b24 (diff) | |
download | ale-2bd966c5cc33b8b19570a7978845c2786da62363.zip |
Puppet: allow for when parser doesn't supply column for errors (#1182)
* puppet: add test for puppet parser validate
* puppet: handle where parser validate doesn't supply the column
* puppet: add test for when parser validate doesn't supply column
* Fix puppet regex to handle Windows paths
-rw-r--r-- | ale_linters/puppet/puppet.vim | 3 | ||||
-rw-r--r-- | test/handler/test_puppet_handler.vader | 45 |
2 files changed, 47 insertions, 1 deletions
diff --git a/ale_linters/puppet/puppet.vim b/ale_linters/puppet/puppet.vim index 47e89d34..8beeb61e 100644 --- a/ale_linters/puppet/puppet.vim +++ b/ale_linters/puppet/puppet.vim @@ -3,8 +3,9 @@ function! ale_linters#puppet#puppet#Handle(buffer, lines) abort " Matches patterns like the following: " Error: Could not parse for environment production: Syntax error at ':' at /root/puppetcode/modules/nginx/manifests/init.pp:43:12 + " Error: Could not parse for environment production: Syntax error at '='; expected '}' at /root/puppetcode/modules/pancakes/manifests/init.pp:5" - let l:pattern = '^Error: .*: \(.\+\) at .\+:\(\d\+\):\(\d\+\)$' + let l:pattern = '^Error: .*: \(.\+\) at .\+\.pp:\(\d\+\):\=\(\d*\)' let l:output = [] for l:match in ale#util#GetMatches(a:lines, l:pattern) diff --git a/test/handler/test_puppet_handler.vader b/test/handler/test_puppet_handler.vader new file mode 100644 index 00000000..0d274fd2 --- /dev/null +++ b/test/handler/test_puppet_handler.vader @@ -0,0 +1,45 @@ +Before: + runtime ale_linters/puppet/puppet.vim + +After: + call ale#linter#Reset() + +Execute(The puppet handler should parse lines correctly when no column is supplied): + " Line Error + AssertEqual + \ [ + \ { + \ 'lnum': 5, + \ 'col': 0, + \ 'text': "Syntax error at '='; expected '}'" + \ }, + \ { + \ 'lnum': 3, + \ 'col': 0, + \ 'text': "Syntax error at '='; expected '}'" + \ }, + \ ], + \ ale_linters#puppet#puppet#Handle(255, [ + \ "Error: Could not parse for environment production: Syntax error at '='; expected '}' at /root/puppetcode/modules/pancakes/manifests/init.pp:5", + \ "Error: Could not parse for environment production: Syntax error at '='; expected '}' at C:/puppet/modules/pancakes/manifests/init.pp:3", + \ ]) + +Execute(The puppet handler should parse lines and column correctly): + " Line Error + AssertEqual + \ [ + \ { + \ 'lnum': 43, + \ 'col': 12, + \ 'text': "Syntax error at ':'" + \ }, + \ { + \ 'lnum': 54, + \ 'col': 9, + \ 'text': "Syntax error at ':'" + \ } + \ ], + \ ale_linters#puppet#puppet#Handle(255, [ + \ "Error: Could not parse for environment production: Syntax error at ':' at /root/puppetcode/modules/nginx/manifests/init.pp:43:12", + \ "Error: Could not parse for environment production: Syntax error at ':' at C:/puppet/modules/nginx/manifests/init.pp:54:9", + \ ]) |