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)