Mercurial > vim
comparison src/testdir/test_shell.vim @ 25698:000b37efd5fa v8.2.3385
patch 8.2.3385: escaping for fish shell does not work properly
Commit: https://github.com/vim/vim/commit/6e82351130ddb8d13cf3748b47f07cae77886fc7
Author: Jason Cox <dev@jasoncarloscox.com>
Date: Sun Aug 29 12:36:49 2021 +0200
patch 8.2.3385: escaping for fish shell does not work properly
Problem: Escaping for fish shell does not work properly.
Solution: Insert a backslash before a backslash. (Jason Cox, closes https://github.com/vim/vim/issues/8810)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 29 Aug 2021 12:45:05 +0200 |
parents | d5e9c05b4811 |
children | 454cbc872368 |
comparison
equal
deleted
inserted
replaced
25697:c7845af77c65 | 25698:000b37efd5fa |
---|---|
59 | 59 |
60 " Test shellescape() for each of the shells. | 60 " Test shellescape() for each of the shells. |
61 for e in shells | 61 for e in shells |
62 exe 'set shell=' .. e[0] | 62 exe 'set shell=' .. e[0] |
63 if e[0] =~# '.*csh$' || e[0] =~# '.*csh.exe$' | 63 if e[0] =~# '.*csh$' || e[0] =~# '.*csh.exe$' |
64 let str1 = "'cmd \"arg1\" '\\''arg2'\\'' \\!%#'" | 64 let str1 = "'cmd \"arg1\" '\\''arg2'\\'' \\!%# \\'" |
65 let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\\\!\\%\\#'" | 65 let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\\\!\\%\\# \\'" |
66 elseif e[0] =~# '.*powershell$' || e[0] =~# '.*powershell.exe$' | 66 elseif e[0] =~# '.*powershell$' || e[0] =~# '.*powershell.exe$' |
67 \ || e[0] =~# '.*pwsh$' || e[0] =~# '.*pwsh.exe$' | 67 \ || e[0] =~# '.*pwsh$' || e[0] =~# '.*pwsh.exe$' |
68 let str1 = "'cmd \"arg1\" ''arg2'' !%#'" | 68 let str1 = "'cmd \"arg1\" ''arg2'' !%# \\'" |
69 let str2 = "'cmd \"arg1\" ''arg2'' \\!\\%\\#'" | 69 let str2 = "'cmd \"arg1\" ''arg2'' \\!\\%\\# \\'" |
70 elseif e[0] =~# '.*fish$' || e[0] =~# '.*fish.exe$' | |
71 let str1 = "'cmd \"arg1\" '\\''arg2'\\'' !%# \\\\'" | |
72 let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\!\\%\\# \\\\'" | |
70 else | 73 else |
71 let str1 = "'cmd \"arg1\" '\\''arg2'\\'' !%#'" | 74 let str1 = "'cmd \"arg1\" '\\''arg2'\\'' !%# \\'" |
72 let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\!\\%\\#'" | 75 let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\!\\%\\# \\'" |
73 endif | 76 endif |
74 call assert_equal(str1, shellescape("cmd \"arg1\" 'arg2' !%#"), e[0]) | 77 call assert_equal(str1, shellescape("cmd \"arg1\" 'arg2' !%# \\"), e[0]) |
75 call assert_equal(str2, shellescape("cmd \"arg1\" 'arg2' !%#", 1), e[0]) | 78 call assert_equal(str2, shellescape("cmd \"arg1\" 'arg2' !%# \\", 1), e[0]) |
76 | 79 |
77 " Try running an external command with the shell. | 80 " Try running an external command with the shell. |
78 if executable(e[0]) | 81 if executable(e[0]) |
79 " set the shell options for the current 'shell' | 82 " set the shell options for the current 'shell' |
80 let [&shellcmdflag, &shellpipe, &shellquote, &shellredir, | 83 let [&shellcmdflag, &shellpipe, &shellquote, &shellredir, |