test: "!:&" works with powershell #11201

Removed 'echo' alias because it does not behave like POSIX echo.
This commit is contained in:
Jan Edmund Lazo
2019-10-11 00:30:20 -04:00
committed by Justin M. Keyes
parent b772b86d2b
commit a7fc2f3f64
3 changed files with 18 additions and 18 deletions

View File

@@ -84,7 +84,7 @@ describe('system()', function()
it('does NOT run in shell', function() it('does NOT run in shell', function()
if iswin() then if iswin() then
eq("%PATH%\n", eval("system(['powershell', '-NoProfile', '-NoLogo', '-ExecutionPolicy', 'RemoteSigned', '-Command', 'echo', '%PATH%'])")) eq("%PATH%\n", eval("system(['powershell', '-NoProfile', '-NoLogo', '-ExecutionPolicy', 'RemoteSigned', '-Command', 'Write-Output', '%PATH%'])"))
else else
eq("* $PATH %PATH%\n", eval("system(['echo', '*', '$PATH', '%PATH%'])")) eq("* $PATH %PATH%\n", eval("system(['echo', '*', '$PATH', '%PATH%'])"))
end end
@@ -133,7 +133,7 @@ describe('system()', function()
eval([[system('"ping" "-n" "1" "127.0.0.1"')]]) eval([[system('"ping" "-n" "1" "127.0.0.1"')]])
eq(0, eval('v:shell_error')) eq(0, eval('v:shell_error'))
eq('"a b"\n', eval([[system('cmd /s/c "cmd /s/c "cmd /s/c "echo "a b""""')]])) eq('"a b"\n', eval([[system('cmd /s/c "cmd /s/c "cmd /s/c "echo "a b""""')]]))
eq('"a b"\n', eval([[system('powershell -NoProfile -NoLogo -ExecutionPolicy RemoteSigned -Command echo ''\^"a b\^"''')]])) eq('"a b"\n', eval([[system('powershell -NoProfile -NoLogo -ExecutionPolicy RemoteSigned -Command Write-Output ''\^"a b\^"''')]]))
end end
it('with shell=cmd.exe', function() it('with shell=cmd.exe', function()
@@ -169,9 +169,9 @@ describe('system()', function()
it('works with powershell', function() it('works with powershell', function()
helpers.set_shell_powershell() helpers.set_shell_powershell()
eq('a\nb\n', eval([[system('echo a b')]])) eq('a\nb\n', eval([[system('Write-Output a b')]]))
eq('C:\\\n', eval([[system('cd c:\; (Get-Location).Path')]])) eq('C:\\\n', eval([[system('cd c:\; (Get-Location).Path')]]))
eq('a b\n', eval([[system('echo "a b"')]])) eq('a b\n', eval([[system('Write-Output "a b"')]]))
end) end)
end end

View File

@@ -502,14 +502,10 @@ end
function module.set_shell_powershell() function module.set_shell_powershell()
local shell = iswin() and 'powershell' or 'pwsh' local shell = iswin() and 'powershell' or 'pwsh'
if not module.eval('executable("'..shell..'")') then assert(module.eval('executable("'..shell..'")'))
error(shell..' is not executable') local cmd = 'Remove-Item -Force '..table.concat(iswin()
end and {'alias:cat', 'alias:echo', 'alias:sleep'}
local aliases = iswin() and {'cat', 'sleep'} or {} or {'alias:echo'}, ',')..';'
local cmd = ''
for _, alias in ipairs(aliases) do
cmd = cmd .. 'Remove-Item -Force alias:' .. alias .. ';'
end
module.source([[ module.source([[
let &shell = ']]..shell..[[' let &shell = ']]..shell..[['
set shellquote= shellpipe=\| shellxquote= set shellquote= shellpipe=\| shellxquote=

View File

@@ -236,14 +236,18 @@ describe("shell command :!", function()
set_shell_powershell() set_shell_powershell()
local screen = Screen.new(30, 4) local screen = Screen.new(30, 4)
screen:attach() screen:attach()
feed_command([[!'echo $a']]) feed_command([[!'Write-Output $a']])
screen:expect{any='\necho %$a', timeout=10000} screen:expect{any='\nWrite%-Output %$a', timeout=10000}
feed_command([[!$a = 1; echo '$a']]) feed_command([[!$a = 1; Write-Output '$a']])
screen:expect{any='\n%$a', timeout=10000} screen:expect{any='\n%$a', timeout=10000}
feed_command([[!"echo $a"]]) feed_command([[!"Write-Output $a"]])
screen:expect{any='\necho', timeout=10000} screen:expect{any='\nWrite%-Output', timeout=10000}
feed_command([[!$a = 1; echo "$a"]]) feed_command([[!$a = 1; Write-Output "$a"]])
screen:expect{any='\n1', timeout=10000} screen:expect{any='\n1', timeout=10000}
feed_command(iswin()
and [[!& 'C:\\Windows\\system32\\cmd.exe' /c 'echo $a']]
or [[!& '/bin/sh' -c 'echo ''$a''']])
screen:expect{any='\n%$a', timeout=10000}
end) end)
end end
end) end)