Mercurial > vim
diff src/testdir/test_terminal.vim @ 30751:9889ff80547e v9.0.0710
patch 9.0.0710: quitting/unloading/hiding a terminal does not work properly
Commit: https://github.com/vim/vim/commit/4282633ba63f6e11f2fe42c4b7758dace184f30d
Author: Yee Cheng Chin <ychin.git@gmail.com>
Date: Mon Oct 10 11:46:16 2022 +0100
patch 9.0.0710: quitting/unloading/hiding a terminal does not work properly
Problem: Quitting/unloading/hiding a terminal buffer does not always work
properly.
Solution: Avoid that ":q!" leaves an empty buffer behind. ":bunload!" also
kills the job and unloads the buffer. ":hide" does not unload the
buffer. (Yee Cheng Chin, closes #11323)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 10 Oct 2022 13:00:05 +0200 |
parents | 58592b6af4e2 |
children | 82e62fd4eae9 |
line wrap: on
line diff
--- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -96,6 +96,16 @@ func Test_terminal_paste_register() unlet g:job endfunc +func Test_terminal_unload_buffer() + let buf = Run_shell_in_terminal({}) + call assert_fails(buf . 'bunload', 'E948:') + exe buf . 'bunload!' + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) + call assert_equal("", bufname(buf)) + + unlet g:job +endfunc + func Test_terminal_wipe_buffer() let buf = Run_shell_in_terminal({}) call assert_fails(buf . 'bwipe', 'E948:') @@ -202,7 +212,7 @@ func Test_terminal_quit() quit! call assert_notequal(buf, bufnr()) call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) - exec buf .. 'bwipe!' + call assert_equal("", bufname(buf)) unlet g:job endfunc @@ -237,7 +247,7 @@ func Test_terminal_split_quit() quit! call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) - exe buf . 'bwipe' + call assert_equal("", bufname(buf)) unlet g:job endfunc @@ -261,16 +271,28 @@ endfunc func Test_terminal_hide_buffer_job_finished() term echo hello let buf = bufnr() - setlocal bufhidden=hide call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))}) + call assert_true(bufloaded(buf)) call assert_true(buflisted(buf)) + + " Test :hide + hide + call assert_true(bufloaded(buf)) + call assert_true(buflisted(buf)) + split + exe buf .. 'buf' + call assert_equal(buf, bufnr()) + + " Test bufhidden, which exercises a different code path + setlocal bufhidden=hide edit Xasdfasdf call assert_true(bufloaded(buf)) call assert_true(buflisted(buf)) exe buf .. 'buf' call assert_equal(buf, bufnr()) setlocal bufhidden= + edit Xasdfasdf call assert_false(bufloaded(buf)) call assert_false(buflisted(buf))