vim-patch:8.2.1053: insufficient testing for 'statusline' and 'tabline'

Problem:    Insufficient testing for 'statusline' and 'tabline'.
Solution:   Add more tests. (Yegappan Lakshmanan, closes vim/vim#6333)
832adf9bb8
This commit is contained in:
zeertzjq
2022-07-10 15:56:42 +08:00
parent 59355653f6
commit fe2b281292
3 changed files with 74 additions and 2 deletions

View File

@@ -2669,6 +2669,27 @@ func Test_autocmd_window()
%bw! %bw!
endfunc endfunc
" Test for trying to close the temporary window used for executing an autocmd
func Test_close_autocmd_window()
%bw!
edit one.txt
tabnew two.txt
augroup aucmd_win_test2
au!
" Nvim makes aucmd_win the last window
" au BufEnter * if expand('<afile>') == 'one.txt' | 1close | endif
au BufEnter * if expand('<afile>') == 'one.txt' | close | endif
augroup END
call assert_fails('doautoall BufEnter', 'E813:')
augroup aucmd_win_test2
au!
augroup END
augroup! aucmd_win_test2
%bw!
endfunc
" Test for trying to close the tab that has the temporary window for exeucing " Test for trying to close the tab that has the temporary window for exeucing
" an autocmd. " an autocmd.
func Test_close_autocmd_tab() func Test_close_autocmd_tab()

View File

@@ -2,8 +2,6 @@
" "
" Not tested yet: " Not tested yet:
" %N " %N
" %T
" %X
source view_util.vim source view_util.vim
source check.vim source check.vim
@@ -108,6 +106,18 @@ func Test_statusline()
set statusline=%F set statusline=%F
call assert_match('/testdir/Xstatusline\s*$', s:get_statusline()) call assert_match('/testdir/Xstatusline\s*$', s:get_statusline())
" Test for min and max width with %(. For some reason, if this test is moved
" after the below test for the help buffer flag, then the code to truncate
" the string is not executed.
set statusline=%015(%f%)
call assert_match('^ Xstatusline\s*$', s:get_statusline())
set statusline=%.6(%f%)
call assert_match('^<sline\s*$', s:get_statusline())
set statusline=%14f
call assert_match('^ Xstatusline\s*$', s:get_statusline())
set statusline=%.4L
call assert_match('^10>3\s*$', s:get_statusline())
" %h: Help buffer flag, text is "[help]". " %h: Help buffer flag, text is "[help]".
" %H: Help buffer flag, text is ",HLP". " %H: Help buffer flag, text is ",HLP".
set statusline=%h,%H set statusline=%h,%H

View File

@@ -72,6 +72,47 @@ func Test_redrawtabline()
au! Bufadd au! Bufadd
endfunc endfunc
" Test for the "%T" and "%X" flags in the 'tabline' option
func MyTabLine()
let s = ''
for i in range(tabpagenr('$'))
" set the tab page number (for mouse clicks)
let s .= '%' . (i + 1) . 'T'
" the label is made by MyTabLabel()
let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
endfor
" after the last tab fill with TabLineFill and reset tab page nr
let s .= '%T'
" right-align the label to close the current tab page
if tabpagenr('$') > 1
let s .= '%=%Xclose'
endif
return s
endfunc
func MyTabLabel(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
return bufname(buflist[winnr - 1])
endfunc
func Test_tabline_flags()
if has('gui')
set guioptions-=e
endif
set tabline=%!MyTabLine()
edit Xtabline1
tabnew Xtabline2
redrawtabline
call assert_match('^ Xtabline1 Xtabline2\s\+close$', Screenline(1))
set tabline=
%bw!
endfunc
function EmptyTabname() function EmptyTabname()
return "" return ""
endfunction endfunction