mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test: system(): backgrounded shell command
These tests are essentially affirming a regression vs Vim. In Vim, :echo system('cat - &', 'foo') returns "foo", because Vim internally wraps the command with shell-specific syntax to redirect the streams from /dev/null[1]. That can't work in Nvim because we use pipes directly (instead of temp files) and don't wrap the command with shell-specific redirection syntax. References #3529 References #5241 [1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_03_02
This commit is contained in:
parent
657ba62a84
commit
16da3a6fe0
@ -108,6 +108,7 @@ Options:
|
|||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
|:CheckHealth|
|
|:CheckHealth|
|
||||||
|
|:drop| is available on all platforms
|
||||||
|:Man| is available by default, with many improvements such as completion
|
|:Man| is available by default, with many improvements such as completion
|
||||||
|
|
||||||
Functions:
|
Functions:
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
-- Specs for
|
|
||||||
-- - `system()`
|
|
||||||
-- - `systemlist()`
|
|
||||||
|
|
||||||
local helpers = require('test.functional.helpers')(after_each)
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
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
|
||||||
@ -120,12 +116,22 @@ describe('system()', 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")'))
|
||||||
end)
|
end)
|
||||||
|
it('to backgrounded command does not crash', function()
|
||||||
|
-- This is indeterminate, just exercise the codepath.
|
||||||
|
eval('system("echo -n echoed &")')
|
||||||
|
eq(2, eval("1+1")) -- Still alive?
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe('passing input', function()
|
describe('passing input', function()
|
||||||
it('returns the program output', function()
|
it('returns the program output', function()
|
||||||
eq("input", eval('system("cat -", "input")'))
|
eq("input", eval('system("cat -", "input")'))
|
||||||
end)
|
end)
|
||||||
|
it('to backgrounded command does not crash', function()
|
||||||
|
-- This is indeterminate, just exercise the codepath.
|
||||||
|
eval('system("cat - &", "input")')
|
||||||
|
eq(2, eval("1+1")) -- Still alive?
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe('passing a lot of input', function()
|
describe('passing a lot of input', function()
|
Loading…
Reference in New Issue
Block a user