summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-08-26 15:34:52 +0100
committerBram Moolenaar <Bram@vim.org>2022-08-26 15:34:52 +0100
commit93f72cc119c796f1ccb75468ef9e446cbfb41e9b (patch)
treeb44ad78f8b0034ab66d71dc142715ede2f05f27c /src
parenta9b5b85068b2fcb1c01ea20524e227bcad579ceb (diff)
patch 9.0.0276: 'buftype' values not sufficiently testedv9.0.0276
Problem: 'buftype' values not sufficiently tested. Solution: Add and extend tests with 'buftype' values. (closes #10988)
Diffstat (limited to 'src')
-rw-r--r--src/testdir/test_autocmd.vim55
-rw-r--r--src/testdir/test_bufline.vim20
-rw-r--r--src/testdir/test_functions.vim30
-rw-r--r--src/version.c2
4 files changed, 76 insertions, 31 deletions
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 4b0928517a..189a2bc464 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -576,16 +576,26 @@ func Test_BufReadCmdHelpJump()
au! BufReadCmd
endfunc
-" BufReadCmd is triggered for a "nofile" buffer
+" BufReadCmd is triggered for a "nofile" buffer. Check all values.
func Test_BufReadCmdNofile()
- new somefile
- set buftype=nofile
- au BufReadCmd somefile call setline(1, 'triggered')
- edit
- call assert_equal('triggered', getline(1))
-
- au! BufReadCmd
- bwipe!
+ for val in ['nofile',
+ \ 'nowrite',
+ \ 'acwrite',
+ \ 'quickfix',
+ \ 'help',
+ \ 'terminal',
+ \ 'prompt',
+ \ 'popup',
+ \ ]
+ new somefile
+ exe 'set buftype=' .. val
+ au BufReadCmd somefile call setline(1, 'triggered')
+ edit
+ call assert_equal('triggered', getline(1))
+
+ au! BufReadCmd
+ bwipe!
+ endfor
endfunc
func Test_augroup_deleted()
@@ -685,15 +695,24 @@ func Test_BufEnter()
au! BufEnter
" Editing a "nofile" buffer doesn't read the file but does trigger BufEnter
- " for historic reasons.
- new somefile
- set buftype=nofile
- au BufEnter somefile call setline(1, 'some text')
- edit
- call assert_equal('some text', getline(1))
-
- bwipe!
- au! BufEnter
+ " for historic reasons. Also test other 'buftype' values.
+ for val in ['nofile',
+ \ 'nowrite',
+ \ 'acwrite',
+ \ 'quickfix',
+ \ 'help',
+ \ 'terminal',
+ \ 'prompt',
+ \ 'popup',
+ \ ]
+ new somefile
+ exe 'set buftype=' .. val
+ au BufEnter somefile call setline(1, 'some text')
+ edit
+ call assert_equal('some text', getline(1))
+ bwipe!
+ au! BufEnter
+ endfor
endfunc
" Closing a window might cause an endless loop
diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim
index 5a062166de..caf6aa7d30 100644
--- a/src/testdir/test_bufline.vim
+++ b/src/testdir/test_bufline.vim
@@ -255,4 +255,24 @@ func Test_deletebufline_select_mode()
bwipe!
endfunc
+func Test_setbufline_startup_nofile()
+ let before =<< trim [CODE]
+ set shortmess+=F
+ file Xresult
+ set buftype=nofile
+ call setbufline('', 1, 'success')
+ [CODE]
+ let after =<< trim [CODE]
+ set buftype=
+ write
+ quit
+ [CODE]
+
+ if !RunVim(before, after, '--clean')
+ return
+ endif
+ call assert_equal(['success'], readfile('Xresult'))
+ call delete('Xresult')
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 03778f8ae0..d483b740f7 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -2368,19 +2368,23 @@ func Test_bufadd_bufload()
exe 'bwipe ' .. buf2
call assert_equal(0, bufexists(buf2))
- " when 'buftype' is "nofile" then bufload() does not read the file
- bwipe! XotherName
- let buf = bufadd('XotherName')
- call setbufvar(buf, '&bt', 'nofile')
- call bufload(buf)
- call assert_equal([''], getbufline(buf, 1, '$'))
-
- " when 'buftype' is "acwrite" then bufload() DOES read the file
- bwipe! XotherName
- let buf = bufadd('XotherName')
- call setbufvar(buf, '&bt', 'acwrite')
- call bufload(buf)
- call assert_equal(['some', 'text'], getbufline(buf, 1, '$'))
+ " When 'buftype' is "nofile" then bufload() does not read the file.
+ " Other values too.
+ for val in [['nofile', 0],
+ \ ['nowrite', 1],
+ \ ['acwrite', 1],
+ \ ['quickfix', 0],
+ \ ['help', 1],
+ \ ['terminal', 0],
+ \ ['prompt', 0],
+ \ ['popup', 0],
+ \ ]
+ bwipe! XotherName
+ let buf = bufadd('XotherName')
+ call setbufvar(buf, '&bt', val[0])
+ call bufload(buf)
+ call assert_equal(val[1] ? ['some', 'text'] : [''], getbufline(buf, 1, '$'), val[0])
+ endfor
bwipe someName
bwipe XotherName
diff --git a/src/version.c b/src/version.c
index e32f990bcb..a0a7210464 100644
--- a/src/version.c
+++ b/src/version.c
@@ -724,6 +724,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 276,
+/**/
275,
/**/
274,