diff options
author | Daniel Hahler <git@thequod.de> | 2017-05-29 03:17:12 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2017-07-07 13:11:20 +0200 |
commit | f31c26f1afb5e4d17678927fa7cd3bb41197a298 (patch) | |
tree | 793c3da7c52d7390dec0d4a7b11cb609f7b99492 /test | |
parent | 105d680aea9f449c118520597a822e834a00c0ac (diff) | |
download | rneovim-f31c26f1afb5e4d17678927fa7cd3bb41197a298.tar.gz rneovim-f31c26f1afb5e4d17678927fa7cd3bb41197a298.tar.bz2 rneovim-f31c26f1afb5e4d17678927fa7cd3bb41197a298.zip |
jobstop/process_stop: send SIGTERM directly
This reverts the revert of #6644 (7c1a5d1d4), and handles it properly
now (with tests).
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/autocmd/termclose_spec.lua | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/test/functional/autocmd/termclose_spec.lua b/test/functional/autocmd/termclose_spec.lua index d4beab22e4..8cc49c0d4c 100644 --- a/test/functional/autocmd/termclose_spec.lua +++ b/test/functional/autocmd/termclose_spec.lua @@ -14,13 +14,52 @@ describe('TermClose event', function() nvim('set_option', 'shellcmdflag', 'EXE') end) - it('triggers when terminal job ends', function() + it('triggers when fast-exiting terminal job stops', function() command('autocmd TermClose * let g:test_termclose = 23') command('terminal') command('call jobstop(b:terminal_job_id)') retry(nil, nil, function() eq(23, eval('g:test_termclose')) end) end) + it('triggers when long-running terminal job gets stopped', function() + nvim('set_option', 'shell', 'sh') + command('autocmd TermClose * let g:test_termclose = 23') + command('terminal') + command('call jobstop(b:terminal_job_id)') + retry(nil, nil, function() eq(23, eval('g:test_termclose')) end) + end) + + it('kills job trapping SIGTERM', function() + nvim('set_option', 'shell', 'sh') + nvim('set_option', 'shellcmdflag', '-c') + command([[ let g:test_job = jobstart('trap "" TERM && echo 1 && sleep 60', { ]] + .. [[ 'on_stdout': {-> execute('let g:test_job_started = 1')}, ]] + .. [[ 'on_exit': {-> execute('let g:test_job_exited = 1')}}) ]]) + retry(nil, nil, function() eq(1, eval('get(g:, "test_job_started", 0)')) end) + + local start = os.time() + command('call jobstop(g:test_job)') + retry(nil, nil, function() eq(1, eval('get(g:, "test_job_exited", 0)')) end) + local duration = os.time() - start + eq(2, duration) + end) + + it('kills pty job trapping SIGHUP and SIGTERM', function() + nvim('set_option', 'shell', 'sh') + nvim('set_option', 'shellcmdflag', '-c') + command([[ let g:test_job = jobstart('trap "" HUP TERM && echo 1 && sleep 60', { ]] + .. [[ 'pty': 1,]] + .. [[ 'on_stdout': {-> execute('let g:test_job_started = 1')}, ]] + .. [[ 'on_exit': {-> execute('let g:test_job_exited = 1')}}) ]]) + retry(nil, nil, function() eq(1, eval('get(g:, "test_job_started", 0)')) end) + + local start = os.time() + command('call jobstop(g:test_job)') + retry(nil, nil, function() eq(1, eval('get(g:, "test_job_exited", 0)')) end) + local duration = os.time() - start + eq(4, duration) + end) + it('reports the correct <abuf>', function() command('set hidden') command('autocmd TermClose * let g:abuf = expand("<abuf>")') |