From 18ae9cb35f41cdf31b38f35698f9537638cdcae0 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 30 Nov 2023 07:15:34 +0800 Subject: [PATCH] test: :terminal when 'shell' uses backslashes --- test/functional/terminal/ex_terminal_spec.lua | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/test/functional/terminal/ex_terminal_spec.lua b/test/functional/terminal/ex_terminal_spec.lua index 2b35ac9267..427146b2e5 100644 --- a/test/functional/terminal/ex_terminal_spec.lua +++ b/test/functional/terminal/ex_terminal_spec.lua @@ -141,7 +141,13 @@ describe(':terminal', function() end) end) -describe(':terminal (with fake shell)', function() +local function test_terminal_with_fake_shell(backslash) + -- shell-test.c is a fake shell that prints its arguments and exits. + local shell_path = testprg('shell-test') + if backslash then + shell_path = shell_path:gsub('/', [[\]]) + end + local screen before_each(function() @@ -149,7 +155,7 @@ describe(':terminal (with fake shell)', function() screen = Screen.new(50, 4) screen:attach({rgb=false}) -- shell-test.c is a fake shell that prints its arguments and exits. - nvim('set_option', 'shell', testprg('shell-test')) + nvim('set_option', 'shell', shell_path) nvim('set_option', 'shellcmdflag', 'EXE') end) @@ -183,7 +189,7 @@ describe(':terminal (with fake shell)', function() end) it("with no argument, but 'shell' has arguments, acts like termopen()", function() - nvim('set_option', 'shell', testprg('shell-test')..' -t jeff') + nvim('set_option', 'shell', shell_path ..' -t jeff') terminal_with_fake_shell() screen:expect([[ ^jeff $ | @@ -205,7 +211,7 @@ describe(':terminal (with fake shell)', function() end) it("executes a given command through the shell, when 'shell' has arguments", function() - nvim('set_option', 'shell', testprg('shell-test')..' -t jeff') + nvim('set_option', 'shell', shell_path ..' -t jeff') command('set shellxquote=') -- win: avoid extra quotes terminal_with_fake_shell('echo hi') screen:expect([[ @@ -297,4 +303,13 @@ describe(':terminal (with fake shell)', function() terminal]]) end end) +end + +describe(':terminal (with fake shell)', function() + test_terminal_with_fake_shell(false) + if is_os('win') then + describe("when 'shell' uses backslashes", function() + test_terminal_with_fake_shell(true) + end) + end end)