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:
|
||||
|:CheckHealth|
|
||||
|:drop| is available on all platforms
|
||||
|:Man| is available by default, with many improvements such as completion
|
||||
|
||||
Functions:
|
||||
|
@ -1,7 +1,3 @@
|
||||
-- Specs for
|
||||
-- - `system()`
|
||||
-- - `systemlist()`
|
||||
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq, clear, eval, feed, nvim =
|
||||
helpers.eq, helpers.clear, helpers.eval, helpers.feed, helpers.nvim
|
||||
@ -120,12 +116,22 @@ describe('system()', function()
|
||||
it('returns the program output', function()
|
||||
eq("echoed", eval('system("echo -n echoed")'))
|
||||
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)
|
||||
|
||||
describe('passing input', function()
|
||||
it('returns the program output', function()
|
||||
eq("input", eval('system("cat -", "input")'))
|
||||
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)
|
||||
|
||||
describe('passing a lot of input', function()
|
Loading…
Reference in New Issue
Block a user