summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-03-20 17:43:01 +0100
committerBram Moolenaar <Bram@vim.org>2018-03-20 17:43:01 +0100
commit3e8d385347b23b2925d1b8ca64b78764d37f21fe (patch)
tree927d9c9e07d31986161c68dcae53ee3b31e1609e
parent6ed86ad170b60517eeddb54c2b22fdc888a22c0b (diff)
downloadvim-git-3e8d385347b23b2925d1b8ca64b78764d37f21fe.tar.gz
patch 8.0.1623: terminal kill tests are flakyv8.0.1623
Problem: Terminal kill tests are flaky. Solution: Instead of running Vim in a terminal, run it as a normal command.
-rw-r--r--src/testdir/test_terminal.vim80
-rw-r--r--src/version.c2
2 files changed, 48 insertions, 34 deletions
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 58737edc8..78f73b6fb 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -855,49 +855,61 @@ func Test_terminal_response_to_control_sequence()
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
diff --git a/src/version.c b/src/version.c
index 418ca0c9e..e647c9bf4 100644
--- 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,