mirror of
https://github.com/neovim/neovim.git
synced 2025-11-10 20:45:15 +00:00
Tests for system()/systemlist() when interrupted with CTRL-C.
This commit is contained in:
@@ -6,6 +6,8 @@ local helpers = require('test.functional.helpers')
|
|||||||
local eq, clear, eval, feed, nvim =
|
local eq, clear, eval, feed, nvim =
|
||||||
helpers.eq, helpers.clear, helpers.eval, helpers.feed, helpers.nvim
|
helpers.eq, helpers.clear, helpers.eval, helpers.feed, helpers.nvim
|
||||||
|
|
||||||
|
local Screen = require('test.functional.ui.screen')
|
||||||
|
|
||||||
|
|
||||||
local function create_file_with_nuls(name)
|
local function create_file_with_nuls(name)
|
||||||
return function()
|
return function()
|
||||||
@@ -42,6 +44,81 @@ describe('system()', function()
|
|||||||
eq(127, eval('v:shell_error'))
|
eq(127, eval('v:shell_error'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('executes shell function', function()
|
||||||
|
local screen
|
||||||
|
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
screen = Screen.new()
|
||||||
|
screen:attach()
|
||||||
|
end)
|
||||||
|
|
||||||
|
after_each(function()
|
||||||
|
screen:detach()
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`echo` and waits for its return', function()
|
||||||
|
feed(':call system("echo")<cr>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
:call system("echo") |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`yes` and is directly interrupted with CTRL-C', function()
|
||||||
|
feed(':call system("yes")<cr><c-c>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
Type :quit<Enter> to exit Vim |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`yes` and is a little bit later interrupted with CTRL-C', function()
|
||||||
|
feed(':call system("yes")<cr>')
|
||||||
|
feed('<c-c>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
Type :quit<Enter> to exit Vim |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
describe('passing no input', function()
|
describe('passing no input', function()
|
||||||
it('returns the program output', function()
|
it('returns the program output', function()
|
||||||
eq("echoed", eval('system("echo -n echoed")'))
|
eq("echoed", eval('system("echo -n echoed")'))
|
||||||
@@ -137,6 +214,81 @@ describe('systemlist()', function()
|
|||||||
eq(127, eval('v:shell_error'))
|
eq(127, eval('v:shell_error'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('exectues shell function', function()
|
||||||
|
local screen
|
||||||
|
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
screen = Screen.new()
|
||||||
|
screen:attach()
|
||||||
|
end)
|
||||||
|
|
||||||
|
after_each(function()
|
||||||
|
screen:detach()
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`echo` and waits for its return', function()
|
||||||
|
feed(':call systemlist("echo")<cr>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
:call systemlist("echo") |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`yes` and is directly interrupted with CTRL-C', function()
|
||||||
|
feed(':call systemlist("echo")<cr><c-c>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
Type :quit<Enter> to exit Vim |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('`yes` and is a little bit later interrupted with CTRL-C', function()
|
||||||
|
feed(':call systemlist("echo")<cr>')
|
||||||
|
feed('<c-c>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
Type :quit<Enter> to exit Vim |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
describe('passing string with linefeed characters as input', function()
|
describe('passing string with linefeed characters as input', function()
|
||||||
it('splits the output on linefeed characters', function()
|
it('splits the output on linefeed characters', function()
|
||||||
eq({'abc', 'def', 'ghi'}, eval([[systemlist("cat -", "abc\ndef\nghi")]]))
|
eq({'abc', 'def', 'ghi'}, eval([[systemlist("cat -", "abc\ndef\nghi")]]))
|
||||||
|
|||||||
Reference in New Issue
Block a user