fix(powershell): filter ":!" commands with args #19268

Problem:
Since 0b9664f524 powershell filtered
:[range]! commands with args causes error:
"Start-Process: A positional parameter cannot be found that accepts argument ..."

Solution:
Pass args to Start-Process via `-ArgumentList`.
closes #19250
This commit is contained in:
Enan Ajmain
2022-07-19 02:26:09 +06:00
committed by GitHub
parent d73c31a41f
commit 3340728c72
2 changed files with 36 additions and 20 deletions

View File

@@ -630,7 +630,7 @@ end)
describe('shell :!', function()
before_each(clear)
it(':{range}! with powershell filter/redirect #16271', function()
it(':{range}! with powershell filter/redirect #16271 #19250', function()
local screen = Screen.new(500, 8)
screen:attach()
local found = helpers.set_shell_powershell(true)
@@ -639,18 +639,25 @@ describe('shell :!', function()
1
4
2]])
feed(':4verbose %!sort<cr>')
screen:expect{
any=[[Executing command: .?Start%-Process sort %-RedirectStandardInput .* %-RedirectStandardOutput .* %-NoNewWindow %-Wait]]
}
if iswin() then
feed(':4verbose %!sort /R<cr>')
screen:expect{
any=[[Executing command: .?Start%-Process sort %-ArgumentList "/R" %-RedirectStandardInput .* %-RedirectStandardOutput .* %-NoNewWindow %-Wait]]
}
else
feed(':4verbose %!sort -r<cr>')
screen:expect{
any=[[Executing command: .?Start%-Process sort %-ArgumentList "%-r" %-RedirectStandardInput .* %-RedirectStandardOutput .* %-NoNewWindow %-Wait]]
}
end
feed('<CR>')
if found then
-- Not using fake powershell, so we can test the result.
expect([[
1
2
4
3
4]])
2
1]])
end
end)
end)