Tests for system()/systemlist() when interrupted with CTRL-C.

This commit is contained in:
oni-link
2015-01-17 16:26:42 +01:00
parent 5c22f07c4f
commit d7d1b11332

View File

@@ -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")]]))