forked from aniani/vim
patch 8.1.2092: MS-Windows: redirect in system() does not work
Problem: MS-Windows: redirect in system() does not work.
Solution: Handle 'shellxescape' and 'shellxquote' better. (Yasuhiro
Matsumoto, closes #2054)
This commit is contained in:
@@ -3,9 +3,24 @@
|
||||
source shared.vim
|
||||
|
||||
func Test_System()
|
||||
if !executable('echo') || !executable('cat') || !executable('wc')
|
||||
if !has('win32')
|
||||
call assert_equal("123\n", system('echo 123'))
|
||||
call assert_equal(['123'], systemlist('echo 123'))
|
||||
call assert_equal('123', system('cat', '123'))
|
||||
call assert_equal(['123'], systemlist('cat', '123'))
|
||||
call assert_equal(["as\<NL>df"], systemlist('cat', ["as\<NL>df"]))
|
||||
else
|
||||
call assert_equal("123\n", system('echo 123'))
|
||||
call assert_equal(["123\r"], systemlist('echo 123'))
|
||||
call assert_equal("123", system('more', '123'))
|
||||
call assert_equal(["123"], systemlist('more', '123'))
|
||||
call assert_equal(["as\<NL>df"], systemlist('more', ["as\<NL>df"]))
|
||||
endif
|
||||
|
||||
if !executable('cat') || !executable('wc')
|
||||
return
|
||||
endif
|
||||
|
||||
let out = 'echo 123'->system()
|
||||
" On Windows we may get a trailing space.
|
||||
if out != "123 \n"
|
||||
@@ -13,14 +28,17 @@ func Test_System()
|
||||
endif
|
||||
|
||||
let out = 'echo 123'->systemlist()
|
||||
" On Windows we may get a trailing space and CR.
|
||||
if out != ["123 \r"]
|
||||
call assert_equal(['123'], out)
|
||||
if !has('win32')
|
||||
call assert_equal(["123"], out)
|
||||
else
|
||||
call assert_equal(["123\r"], out)
|
||||
endif
|
||||
|
||||
call assert_equal('123', system('cat', '123'))
|
||||
call assert_equal(['123'], systemlist('cat', '123'))
|
||||
call assert_equal(["as\<NL>df"], systemlist('cat', ["as\<NL>df"]))
|
||||
if executable('cat')
|
||||
call assert_equal('123', system('cat', '123'))
|
||||
call assert_equal(['123'], systemlist('cat', '123'))
|
||||
call assert_equal(["as\<NL>df"], systemlist('cat', ["as\<NL>df"]))
|
||||
endif
|
||||
|
||||
new Xdummy
|
||||
call setline(1, ['asdf', "pw\<NL>er", 'xxxx'])
|
||||
@@ -39,9 +57,11 @@ func Test_System()
|
||||
call assert_equal(['3'], out)
|
||||
endif
|
||||
|
||||
let out = systemlist('cat', bufnr('%'))
|
||||
" On Windows we may get a trailing CR.
|
||||
if out != ["asdf\r", "pw\<NL>er\r", "xxxx\r"]
|
||||
if !has('win32')
|
||||
let out = systemlist('cat', bufnr('%'))
|
||||
call assert_equal(['asdf', "pw\<NL>er", 'xxxx'], out)
|
||||
else
|
||||
let out = systemlist('more', bufnr('%'))
|
||||
call assert_equal(['asdf', "pw\<NL>er", 'xxxx'], out)
|
||||
endif
|
||||
bwipe!
|
||||
|
||||
Reference in New Issue
Block a user