diff options
author | Marcos Almeida <maurelio1234@users.noreply.github.com> | 2018-07-29 03:49:11 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-07-29 03:49:11 +0200 |
commit | a2253744c9bcd9229be9533540075e977f0be2cd (patch) | |
tree | 070c1e53b0578e99bcb0b8dcb2c56b5b7b821ba8 /test/functional/eval/system_spec.lua | |
parent | befc7de26f2907fdf0c61b883c68c7a64432aa03 (diff) | |
download | rneovim-a2253744c9bcd9229be9533540075e977f0be2cd.tar.gz rneovim-a2253744c9bcd9229be9533540075e977f0be2cd.tar.bz2 rneovim-a2253744c9bcd9229be9533540075e977f0be2cd.zip |
system(): handle profiling and 'verbose' #8730
closes #8362
Vim's code calls `call_shell` directly from `get_system_output_as_rettv`
whereas in Nvim this function has been rewritten to not call `call_shell` but to call
`os_system` via `do_os_system`, losing the support for profiling and verbose.
Changing the code to call `call_shell` from `get_system_output_as_rettv`
seems to be too complicated to be worth it on the current version of the
code. So this commit duplicates the relevant code.
Diffstat (limited to 'test/functional/eval/system_spec.lua')
-rw-r--r-- | test/functional/eval/system_spec.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/functional/eval/system_spec.lua b/test/functional/eval/system_spec.lua index 5e12b6a6a4..03aa7fa45f 100644 --- a/test/functional/eval/system_spec.lua +++ b/test/functional/eval/system_spec.lua @@ -203,6 +203,48 @@ describe('system()', function() ]]) end) + it('prints verbose information', function() + feed(':4verbose echo system("echo hi")<cr>') + screen:expect([[ + | + ~ | + ~ | + ~ | + ~ | + ~ | + ~ | + ~ | + | + Calling shell to execute: "echo hi" | + | + hi | + | + Press ENTER or type command to continue^ | + ]]) + feed('<cr>') + end) + + it('self and total time recorded separately', function() + local tempfile = helpers.tmpname() + + feed(':function! AlmostNoSelfTime()<cr>') + feed('echo system("echo hi")<cr>') + feed('endfunction<cr>') + + feed(':profile start ' .. tempfile .. '<cr>') + feed(':profile func AlmostNoSelfTime<cr>') + feed(':call AlmostNoSelfTime()<cr>') + feed(':profile dump<cr>') + + feed(':edit ' .. tempfile .. '<cr>') + + local command_total_time = tonumber(helpers.funcs.split(helpers.funcs.getline(7))[2]) + local command_self_time = tonumber(helpers.funcs.split(helpers.funcs.getline(7))[3]) + + helpers.neq(nil, command_total_time) + helpers.neq(nil, command_self_time) + end) + it('`yes` interrupted with CTRL-C', function() feed(':call system("' .. (iswin() and 'for /L %I in (1,0,2) do @echo y' |