Mercurial > vim
changeset 13499:661394686fd8 v8.0.1623
patch 8.0.1623: terminal kill tests are flaky
commit https://github.com/vim/vim/commit/3e8d385347b23b2925d1b8ca64b78764d37f21fe
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 20 Mar 2018 17:45:07 +0100 |
parents | e2719254a7a4 |
children | 8579d5f3da4b |
files | src/testdir/test_terminal.vim src/version.c |
diffstat | 2 files changed, 48 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- 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\<CR>") - 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, "\<C-W>:qall\<CR>") - 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\<CR>") - call WaitFor({-> term_getline(buf, 10) =~ '\[running]'}) - call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'}) - - " set kill using term_setkill() - call term_sendkeys(buf, "\<C-W>:call term_setkill(bufnr('%'), 'kill')\<CR>") - - " make Vim exit, it will kill the shell - call term_sendkeys(buf, "\<C-W>:qall\<CR>") - 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