summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2018-05-28 12:51:06 +0100
committerw0rp <devw0rp@gmail.com>2018-05-28 12:51:06 +0100
commitcd0dc0a2273883109f5a7ccd4bb2b7e15f3630df (patch)
tree6c20f0b93d7c99b93bcf39e724a1225481b2edfc
parenteaf35bc6115694def260a1790b8eb62559af6785 (diff)
downloadale-cd0dc0a2273883109f5a7ccd4bb2b7e15f3630df.zip
Fix #1611 - Fix perlcritic escaping on Windows
-rw-r--r--ale_linters/perl/perlcritic.vim19
-rw-r--r--test/command_callback/test_perlcritic_command_callback.vader16
2 files changed, 19 insertions, 16 deletions
diff --git a/ale_linters/perl/perlcritic.vim b/ale_linters/perl/perlcritic.vim
index 24f7eb86..e91c8a03 100644
--- a/ale_linters/perl/perlcritic.vim
+++ b/ale_linters/perl/perlcritic.vim
@@ -18,9 +18,9 @@ function! ale_linters#perl#perlcritic#GetExecutable(buffer) abort
endfunction
function! ale_linters#perl#perlcritic#GetProfile(buffer) abort
-
" first see if we've been overridden
let l:profile = ale#Var(a:buffer, 'perl_perlcritic_profile')
+
if l:profile is? ''
return ''
endif
@@ -31,6 +31,7 @@ endfunction
function! ale_linters#perl#perlcritic#GetCommand(buffer) abort
let l:critic_verbosity = '%l:%c %m\n'
+
if ale#Var(a:buffer, 'perl_perlcritic_showrules')
let l:critic_verbosity = '%l:%c %m [%p]\n'
endif
@@ -38,17 +39,11 @@ function! ale_linters#perl#perlcritic#GetCommand(buffer) abort
let l:profile = ale_linters#perl#perlcritic#GetProfile(a:buffer)
let l:options = ale#Var(a:buffer, 'perl_perlcritic_options')
- let l:command = ale#Escape(ale_linters#perl#perlcritic#GetExecutable(a:buffer))
- \ . " --verbose '". l:critic_verbosity . "' --nocolor"
-
- if l:profile isnot? ''
- let l:command .= ' --profile ' . ale#Escape(l:profile)
- endif
- if l:options isnot? ''
- let l:command .= ' ' . l:options
- endif
-
- return l:command
+ return ale#Escape(ale_linters#perl#perlcritic#GetExecutable(a:buffer))
+ \ . ' --verbose ' . ale#Escape(l:critic_verbosity)
+ \ . ' --nocolor'
+ \ . (!empty(l:profile) ? ' --profile ' . ale#Escape(l:profile) : '')
+ \ . (!empty(l:options) ? ' ' . l:options : '')
endfunction
diff --git a/test/command_callback/test_perlcritic_command_callback.vader b/test/command_callback/test_perlcritic_command_callback.vader
index 6507868b..e8d8cc18 100644
--- a/test/command_callback/test_perlcritic_command_callback.vader
+++ b/test/command_callback/test_perlcritic_command_callback.vader
@@ -30,14 +30,18 @@ Execute(The command should be correct with g:ale_perl_perlcritic_showrules off):
let b:ale_perl_perlcritic_showrules = 0
AssertEqual
- \ ale#Escape('perlcritic') . ' --verbose ''%l:%c %m\n'' --nocolor',
+ \ ale#Escape('perlcritic')
+ \ . ' --verbose ' . ale#Escape('%l:%c %m\n')
+ \ . ' --nocolor',
\ ale_linters#perl#perlcritic#GetCommand(bufnr(''))
Execute(The command should be correct with g:ale_perl_perlcritic_showrules on):
let b:ale_perl_perlcritic_showrules = 1
AssertEqual
- \ ale#Escape('perlcritic') . ' --verbose ''%l:%c %m [%p]\n'' --nocolor',
+ \ ale#Escape('perlcritic')
+ \ . ' --verbose ' . ale#Escape('%l:%c %m [%p]\n')
+ \ . ' --nocolor',
\ ale_linters#perl#perlcritic#GetCommand(bufnr(''))
Execute(The command search for the profile file when set):
@@ -46,7 +50,9 @@ Execute(The command search for the profile file when set):
let b:readme_path = ale#path#Simplify(expand('%:p:h:h:h') . '/README.md')
AssertEqual
- \ ale#Escape('perlcritic') . ' --verbose ''%l:%c %m\n'' --nocolor'
+ \ ale#Escape('perlcritic')
+ \ . ' --verbose ' . ale#Escape('%l:%c %m\n')
+ \ . ' --nocolor'
\ . ' --profile ' . ale#Escape(b:readme_path),
\ ale_linters#perl#perlcritic#GetCommand(bufnr(''))
@@ -54,6 +60,8 @@ Execute(Extra options should be set appropriately):
let b:ale_perl_perlcritic_options = 'beep boop'
AssertEqual
- \ ale#Escape('perlcritic') . ' --verbose ''%l:%c %m\n'' --nocolor'
+ \ ale#Escape('perlcritic')
+ \ . ' --verbose ' . ale#Escape('%l:%c %m\n')
+ \ . ' --nocolor'
\ . ' beep boop',
\ ale_linters#perl#perlcritic#GetCommand(bufnr(''))