diff options
author | James McCoy <jamessan@jamessan.com> | 2017-07-07 10:29:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-07 10:29:49 -0400 |
commit | 773ea9dbdccd9252b0901e64ccb1c4fef6ca7cb9 (patch) | |
tree | 1b38df580460030b6a8af5fb47f3b1a2809650bc /test | |
parent | 5f5f2ce0de68f363a1c839edb9c89a63b35e2d6e (diff) | |
parent | f31c26f1afb5e4d17678927fa7cd3bb41197a298 (diff) | |
download | rneovim-773ea9dbdccd9252b0901e64ccb1c4fef6ca7cb9.tar.gz rneovim-773ea9dbdccd9252b0901e64ccb1c4fef6ca7cb9.tar.bz2 rneovim-773ea9dbdccd9252b0901e64ccb1c4fef6ca7cb9.zip |
Merge pull request #6823 from blueyed/fix-term-stop
fix SIGTERM/SIGHUP for jobs
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>")') |