diff options
Diffstat (limited to 'src/testdir/test_man.vim')
-rw-r--r-- | src/testdir/test_man.vim | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/testdir/test_man.vim b/src/testdir/test_man.vim new file mode 100644 index 0000000..f3af477 --- /dev/null +++ b/src/testdir/test_man.vim @@ -0,0 +1,149 @@ +" Test specifically for the Man filetype plugin. + +runtime ftplugin/man.vim + +func Test_g_ft_man_open_mode() + vnew + let l:h = winheight(1) + q + let l:w = winwidth(1) + + " split horizontally + let wincnt = winnr('$') + Man vim + if wincnt == winnr('$') + " Vim manual page cannot be found. + return + endif + + call assert_inrange(l:w - 2, l:w + 2, winwidth(1)) + call assert_true(l:h > winheight(1)) + call assert_equal(1, tabpagenr('$')) + call assert_equal(1, tabpagenr()) + q + + " split horizontally + let g:ft_man_open_mode = "horz" + Man vim + call assert_inrange(l:w - 2, l:w + 2, winwidth(1)) + call assert_true(l:h > winheight(1)) + call assert_equal(1, tabpagenr('$')) + call assert_equal(1, tabpagenr()) + q + + " split vertically + let g:ft_man_open_mode = "vert" + Man vim + call assert_true(l:w > winwidth(1)) + call assert_equal(l:h, winheight(1)) + call assert_equal(1, tabpagenr('$')) + call assert_equal(1, tabpagenr()) + q + + " separate tab + let g:ft_man_open_mode = "tab" + Man vim + call assert_inrange(l:w - 2, l:w + 2, winwidth(1)) + call assert_inrange(l:h - 1, l:h + 1, winheight(1)) + call assert_equal(2, tabpagenr('$')) + call assert_equal(2, tabpagenr()) + q + + unlet g:ft_man_open_mode +endfunc + +func Test_nomodifiable() + let wincnt = winnr('$') + Man vim + if wincnt == winnr('$') + " Vim manual page cannot be found. + return + endif + call assert_false(&l:modifiable) + q +endfunc + +func Test_buffer_count_hidden() + %bw! + set hidden + + call assert_equal(1, len(getbufinfo())) + + let wincnt = winnr('$') + Man vim + if wincnt == winnr('$') + " Vim manual page cannot be found. + return + endif + + call assert_equal(1, len(getbufinfo({'buflisted':1}))) + call assert_equal(2, len(getbufinfo())) + q + + Man vim + + call assert_equal(1, len(getbufinfo({'buflisted':1}))) + call assert_equal(2, len(getbufinfo())) + q + + set hidden& +endfunc + +" Check that we do not alter the settings in the initial window. +func Test_local_options() + %bw! + set foldcolumn=1 number + + let wincnt = winnr('$') + Man vim + if wincnt == winnr('$') + " Vim manual page cannot be found. + return + endif + + " man page + call assert_false(&nu) + call assert_equal(0, &fdc) + + " initial window + wincmd p + call assert_true(&nu) + call assert_equal(1, &fdc) + + %bw! + set foldcolumn& number& +endfunc + +" Check that the unnamed register is not overwritten. +func Test_keep_unnamed_register() + %bw! + + let @" = '---' + + let wincnt = winnr('$') + Man vim + if wincnt == winnr('$') + " Vim manual page cannot be found. + return + endif + + call assert_equal('---', @") + + %bw! +endfunc + +" Check that underlying shell command arguments are escaped. +func Test_Man_uses_shellescape() + Man `touch\ Xbar` `touch\ Xfoo` + + redir => msg + 1messages + redir END + call assert_match('no manual entry for "`touch Xfoo`"', msg) + + call assert_false(filereadable('Xbar')) + call assert_false(filereadable('Xfoo')) +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab |