diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-01-24 22:33:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-24 22:33:55 +0100 |
commit | 1b6ae2dbb0aa24748d44752407cd18b5abec1d0a (patch) | |
tree | 5a518f3dfb4b6af6afb0180017984b523333b09d /test/functional/core/channels_spec.lua | |
parent | 1907a9481423ccf4433f8184bbfdc633589e43f5 (diff) | |
parent | a4069a3eed65f14b1149c6cda8638dcb49ab5027 (diff) | |
download | rneovim-1b6ae2dbb0aa24748d44752407cd18b5abec1d0a.tar.gz rneovim-1b6ae2dbb0aa24748d44752407cd18b5abec1d0a.tar.bz2 rneovim-1b6ae2dbb0aa24748d44752407cd18b5abec1d0a.zip |
Merge pull request #15910 from glacambre/silent_stdioopen
feat(--headless): do not print anything when stdioopen() has been used
Diffstat (limited to 'test/functional/core/channels_spec.lua')
-rw-r--r-- | test/functional/core/channels_spec.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/functional/core/channels_spec.lua b/test/functional/core/channels_spec.lua index 93dec9fb35..c28300f0f4 100644 --- a/test/functional/core/channels_spec.lua +++ b/test/functional/core/channels_spec.lua @@ -100,6 +100,38 @@ describe('channels', function() eq({"notification", "exit", {3,0}}, next_msg()) end) + it('can use stdio channel and on_print callback', function() + source([[ + let g:job_opts = { + \ 'on_stdout': function('OnEvent'), + \ 'on_stderr': function('OnEvent'), + \ 'on_exit': function('OnEvent'), + \ } + ]]) + meths.set_var("nvim_prog", nvim_prog) + meths.set_var("code", [[ + function! OnStdin(id, data, event) dict + echo string([a:id, a:data, a:event]) + if a:data == [''] + quit + endif + endfunction + function! OnPrint(text) dict + call chansend(g:x, ['OnPrint:' .. a:text]) + endfunction + let g:x = stdioopen({'on_stdin': funcref('OnStdin'), 'on_print':'OnPrint'}) + call chansend(x, "hello") + ]]) + command("let g:id = jobstart([ g:nvim_prog, '-u', 'NONE', '-i', 'NONE', '--cmd', 'set noswapfile', '--headless', '--cmd', g:code], g:job_opts)") + local id = eval("g:id") + ok(id > 0) + + eq({ "notification", "stdout", {id, { "hello" } } }, next_msg()) + + command("call chansend(id, 'howdy')") + eq({"notification", "stdout", {id, {"OnPrint:[1, ['howdy'], 'stdin']"}}}, next_msg()) + end) + local function expect_twoline(id, stream, line1, line2, nobr) local msg = next_msg() local joined = nobr and {line1..line2} or {line1, line2} |