mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00: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:
		| @@ -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() | ||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes