# HG changeset patch # User Christian Brabandt # Date 1521564307 -3600 # Node ID 661394686fd844eb25e65dfd53dd672d408332a1 # Parent e2719254a7a4a68306ffd4ba4e987df80138063d patch 8.0.1623: terminal kill tests are flaky commit https://github.com/vim/vim/commit/3e8d385347b23b2925d1b8ca64b78764d37f21fe Author: Bram Moolenaar Date: Tue Mar 20 17:43:01 2018 +0100 patch 8.0.1623: terminal kill tests are flaky Problem: Terminal kill tests are flaky. Solution: Instead of running Vim in a terminal, run it as a normal command. diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -855,49 +855,61 @@ func Test_terminal_response_to_control_s unlet g:job endfunc -" Run Vim in a terminal, then start a terminal in that Vim with a kill -" argument, check that :qall works. -func Test_terminal_qall_kill_arg() - if !CanRunVimInTerminal() +" Run Vim, start a terminal in that Vim with the kill argument, +" :qall works. +func Run_terminal_qall_kill(line1, line2) + " 1. Open a terminal window and wait for the prompt to appear + " 2. set kill using term_setkill() + " 3. make Vim exit, it will kill the shell + let after = [ + \ a:line1, + \ 'let buf = bufnr("%")', + \ 'while term_getline(buf, 1) =~ "^\\s*$"', + \ ' sleep 10m', + \ 'endwhile', + \ a:line2, + \ 'au VimLeavePre * call writefile(["done"], "Xdone")', + \ 'qall', + \ ] + if !RunVim([], after, '') return endif - let buf = RunVimInTerminal('', {}) - - " Open a terminal window and wait for the prompt to appear - call term_sendkeys(buf, ":term ++kill=kill\") - call WaitFor({-> term_getline(buf, 10) =~ '\[running]'}) - call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'}) - - " make Vim exit, it will kill the shell - call term_sendkeys(buf, "\:qall\") - call WaitFor({-> term_getstatus(buf) == "finished"}) - - " close the terminal window where Vim was running - quit + call assert_equal("done", readfile("Xdone")[0]) + call delete("Xdone") endfunc " Run Vim in a terminal, then start a terminal in that Vim with a kill " argument, check that :qall works. +func Test_terminal_qall_kill_arg() + call Run_terminal_qall_kill('term ++kill=kill', '') +endfunc + +" Run Vim, start a terminal in that Vim, set the kill argument with +" term_setkill(), check that :qall works. func Test_terminal_qall_kill_func() - if !CanRunVimInTerminal() + call Run_terminal_qall_kill('term', 'call term_setkill(buf, "kill")') +endfunc + +" Run Vim, start a terminal in that Vim without the kill argument, +" check that :qall does not exit, :qall! does. +func Test_terminal_qall_exit() + let after = [ + \ 'term', + \ 'let buf = bufnr("%")', + \ 'while term_getline(buf, 1) =~ "^\\s*$"', + \ ' sleep 10m', + \ 'endwhile', + \ 'set nomore', + \ 'au VimLeavePre * call writefile(["too early"], "Xdone")', + \ 'qall', + \ 'au! VimLeavePre * exe buf . "bwipe!" | call writefile(["done"], "Xdone")', + \ 'cquit', + \ ] + if !RunVim([], after, '') return endif - let buf = RunVimInTerminal('', {}) - - " Open a terminal window and wait for the prompt to appear - call term_sendkeys(buf, ":term\") - call WaitFor({-> term_getline(buf, 10) =~ '\[running]'}) - call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'}) - - " set kill using term_setkill() - call term_sendkeys(buf, "\:call term_setkill(bufnr('%'), 'kill')\") - - " make Vim exit, it will kill the shell - call term_sendkeys(buf, "\:qall\") - call WaitFor({-> term_getstatus(buf) == "finished"}) - - " close the terminal window where Vim was running - quit + call assert_equal("done", readfile("Xdone")[0]) + call delete("Xdone") endfunc " Run Vim in a terminal, then start a terminal in that Vim without a kill diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -767,6 +767,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1623, +/**/ 1622, /**/ 1621,