Mercurial > vim
diff src/testdir/test_terminal.vim @ 11917:00836eb177cb v8.0.0838
patch 8.0.0838: buffer hangs around whem terminal window is closed
commit https://github.com/vim/vim/commit/94053a51255121713f51c122eb0dbb46c120e6d4
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Aug 1 21:44:33 2017 +0200
patch 8.0.0838: buffer hangs around whem terminal window is closed
Problem: Buffer hangs around whem terminal window is closed.
Solution: When the job has ended wipe out a terminal buffer when the window
is closed.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 01 Aug 2017 21:45:04 +0200 |
parents | 22658e33203f |
children | c9da7b42fdf5 |
line wrap: on
line diff
--- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -6,6 +6,8 @@ endif source shared.vim +" Open a terminal with a shell, assign the job to g:job and return the buffer +" number. func Run_shell_in_terminal() let buf = term_start(&shell) @@ -16,22 +18,31 @@ func Run_shell_in_terminal() let g:job = term_getjob(buf) call assert_equal(v:t_job, type(g:job)) - call term_sendkeys(buf, "exit\r") + return buf +endfunc + +" Stops the shell started by Run_shell_in_terminal(). +func Stop_shell_in_terminal(buf) + call term_sendkeys(a:buf, "exit\r") call WaitFor('job_status(g:job) == "dead"') call assert_equal('dead', job_status(g:job)) - - return buf endfunc func Test_terminal_basic() let buf = Run_shell_in_terminal() + call Stop_shell_in_terminal(buf) + call term_wait(buf) - exe buf . 'bwipe' + " closing window wipes out the terminal buffer a with finished job + close + call assert_equal("", bufname(buf)) + unlet g:job endfunc func Test_terminal_make_change() let buf = Run_shell_in_terminal() + call Stop_shell_in_terminal(buf) call term_wait(buf) setlocal modifiable @@ -43,6 +54,32 @@ func Test_terminal_make_change() unlet g:job endfunc +func Test_terminal_wipe_buffer() + let buf = Run_shell_in_terminal() + exe buf . 'bwipe' + call WaitFor('job_status(g:job) == "dead"') + call assert_equal('dead', job_status(g:job)) + call assert_equal("", bufname(buf)) + + unlet g:job +endfunc + +func Test_terminal_hide_buffer() + let buf = Run_shell_in_terminal() + quit + for nr in range(1, winnr('$')) + call assert_notequal(winbufnr(nr), buf) + endfor + call assert_true(bufloaded(buf)) + call assert_true(buflisted(buf)) + + exe 'split ' . buf . 'buf' + call Stop_shell_in_terminal(buf) + exe buf . 'bwipe' + + unlet g:job +endfunc + func Check_123(buf) let l = term_scrape(a:buf, 1) call assert_true(len(l) > 0)