Fix #676 - Fix handling of Perl errors
This commit is contained in:
parent
40f6ee4c39
commit
ce2bfa88eb
@ -27,7 +27,7 @@ function! ale_linters#perl#perl#Handle(buffer, lines) abort
|
|||||||
let l:text = l:match[1]
|
let l:text = l:match[1]
|
||||||
let l:type = 'E'
|
let l:type = 'E'
|
||||||
|
|
||||||
if l:match[2][-len(l:basename):] ==# l:basename
|
if ale#path#IsBufferPath(a:buffer, l:match[2])
|
||||||
\&& l:text !=# 'BEGIN failed--compilation aborted'
|
\&& l:text !=# 'BEGIN failed--compilation aborted'
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'lnum': l:line,
|
\ 'lnum': l:line,
|
||||||
|
@ -65,6 +65,13 @@ endfunction
|
|||||||
" Given a buffer number and a relative or absolute path, return 1 if the
|
" Given a buffer number and a relative or absolute path, return 1 if the
|
||||||
" two paths represent the same file on disk.
|
" two paths represent the same file on disk.
|
||||||
function! ale#path#IsBufferPath(buffer, complex_filename) abort
|
function! ale#path#IsBufferPath(buffer, complex_filename) abort
|
||||||
|
" If the path is one of many different names for stdin, we have a match.
|
||||||
|
if a:complex_filename ==# '-'
|
||||||
|
\|| a:complex_filename ==# 'stdin'
|
||||||
|
\|| a:complex_filename[:0] ==# '<'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
let l:test_filename = simplify(a:complex_filename)
|
let l:test_filename = simplify(a:complex_filename)
|
||||||
|
|
||||||
if l:test_filename[:1] ==# './'
|
if l:test_filename[:1] ==# './'
|
||||||
|
@ -23,3 +23,17 @@ Execute(The Perl linter should ignore errors from other files):
|
|||||||
\ 'Compilation failed in require at ' . b:path . '/bar.pl line 2.',
|
\ 'Compilation failed in require at ' . b:path . '/bar.pl line 2.',
|
||||||
\ 'BEGIN failed--compilation aborted at ' . b:path . '/bar.pl line 2.',
|
\ 'BEGIN failed--compilation aborted at ' . b:path . '/bar.pl line 2.',
|
||||||
\ ])
|
\ ])
|
||||||
|
|
||||||
|
Execute(The Perl linter should complain about failing to locate modules):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': '23',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ 'text': 'Can''t locate JustOneDb.pm in @INC (you may need to install the JustOneDb module) (@INC contains: /home/local/sean/work/PostgreSQL/6616/../../../../lib /home/local/sean/work/PostgreSQL/6616/lib lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .)',
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#perl#perl#Handle(bufnr(''), [
|
||||||
|
\ 'Can''t locate JustOneDb.pm in @INC (you may need to install the JustOneDb module) (@INC contains: /home/local/sean/work/PostgreSQL/6616/../../../../lib /home/local/sean/work/PostgreSQL/6616/lib lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at - line 23.',
|
||||||
|
\ 'BEGIN failed--compilation aborted at - line 23.',
|
||||||
|
\ ])
|
||||||
|
@ -24,3 +24,9 @@ Execute(ale#path#IsBufferPath should match paths with redundant slashes):
|
|||||||
silent file! foo.txt
|
silent file! foo.txt
|
||||||
|
|
||||||
Assert ale#path#IsBufferPath(bufnr(''), getcwd() . '////foo.txt'), 'No match for foo.txt'
|
Assert ale#path#IsBufferPath(bufnr(''), getcwd() . '////foo.txt'), 'No match for foo.txt'
|
||||||
|
|
||||||
|
Execute(ale#path#IsBufferPath should accept various names for stdin):
|
||||||
|
Assert ale#path#IsBufferPath(bufnr(''), '-')
|
||||||
|
Assert ale#path#IsBufferPath(bufnr(''), 'stdin')
|
||||||
|
Assert ale#path#IsBufferPath(bufnr(''), '<stdin>')
|
||||||
|
Assert ale#path#IsBufferPath(bufnr(''), '<somethingelse>')
|
||||||
|
Loading…
Reference in New Issue
Block a user