xref: /vim-8.2.3635/src/testdir/test_man.vim (revision 159563b4)
1" Test specifically for the Man filetype plugin.
2
3runtime ftplugin/man.vim
4
5func Test_g_ft_man_open_mode()
6  vnew
7  let l:h = winheight(1)
8  q
9  let l:w = winwidth(1)
10
11  " split horizontally
12  let wincnt = winnr('$')
13  Man vim
14  if wincnt == winnr('$')
15    " Vim manual page cannot be found.
16    return
17  endif
18
19  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
20  call assert_true(l:h > winheight(1))
21  call assert_equal(1, tabpagenr('$'))
22  call assert_equal(1, tabpagenr())
23  q
24
25  " split horizontally
26  let g:ft_man_open_mode = "horz"
27  Man vim
28  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
29  call assert_true(l:h > winheight(1))
30  call assert_equal(1, tabpagenr('$'))
31  call assert_equal(1, tabpagenr())
32  q
33
34  " split vertically
35  let g:ft_man_open_mode = "vert"
36  Man vim
37  call assert_true(l:w > winwidth(1))
38  call assert_equal(l:h, winheight(1))
39  call assert_equal(1, tabpagenr('$'))
40  call assert_equal(1, tabpagenr())
41  q
42
43  " separate tab
44  let g:ft_man_open_mode = "tab"
45  Man vim
46  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
47  call assert_inrange(l:h - 1, l:h + 1, winheight(1))
48  call assert_equal(2, tabpagenr('$'))
49  call assert_equal(2, tabpagenr())
50  q
51
52  unlet g:ft_man_open_mode
53endfunc
54
55func Test_nomodifiable()
56  let wincnt = winnr('$')
57  Man vim
58  if wincnt == winnr('$')
59    " Vim manual page cannot be found.
60    return
61  endif
62  call assert_false(&l:modifiable)
63  q
64endfunc
65
66func Test_buffer_count_hidden()
67  %bw!
68  set hidden
69
70  call assert_equal(1, len(getbufinfo()))
71
72  let wincnt = winnr('$')
73  Man vim
74  if wincnt == winnr('$')
75    " Vim manual page cannot be found.
76    return
77  endif
78
79  call assert_equal(1, len(getbufinfo({'buflisted':1})))
80  call assert_equal(2, len(getbufinfo()))
81  q
82
83  Man vim
84
85  call assert_equal(1, len(getbufinfo({'buflisted':1})))
86  call assert_equal(2, len(getbufinfo()))
87  q
88
89  set hidden&
90endfunc
91
92" Check that we do not alter the settings in the initial window.
93func Test_local_options()
94  %bw!
95  set foldcolumn=1 number
96
97  let wincnt = winnr('$')
98  Man vim
99  if wincnt == winnr('$')
100    " Vim manual page cannot be found.
101    return
102  endif
103
104  " man page
105  call assert_false(&nu)
106  call assert_equal(0, &fdc)
107
108  " initial window
109  wincmd p
110  call assert_true(&nu)
111  call assert_equal(1, &fdc)
112
113  %bw!
114  set foldcolumn& number&
115endfunc
116
117" Check that the unnamed register is not overwritten.
118func Test_keep_unnamed_register()
119  %bw!
120
121  let @" = '---'
122
123  let wincnt = winnr('$')
124  Man vim
125  if wincnt == winnr('$')
126    " Vim manual page cannot be found.
127    return
128  endif
129
130  call assert_equal('---', @")
131
132  %bw!
133endfunc
134
135" Check that underlying shell command arguments are escaped.
136func Test_Man_uses_shellescape()
137  Man `touch\ Xbar` `touch\ Xfoo`
138
139  redir => msg
140  1messages
141  redir END
142  call assert_match('no manual entry for "`touch Xfoo`"', msg)
143
144  call assert_false(filereadable('Xbar'))
145  call assert_false(filereadable('Xfoo'))
146endfunc
147
148
149" vim: shiftwidth=2 sts=2 expandtab
150