test_help_tagjump.vim (8628B)
1 " Tests for :help! {subject} 2 3 func Test_help_tagjump() 4 help 5 call assert_equal("help", &filetype) 6 call assert_true(getline('.') =~ '\*help.txt\*') 7 helpclose 8 9 help | 10 call assert_equal("help", &filetype) 11 call assert_true(getline('.') =~ '\*bar\*') 12 helpclose 13 14 help " 15 call assert_equal("help", &filetype) 16 call assert_true(getline('.') =~ '\*quote\*') 17 helpclose 18 19 help * 20 call assert_equal("help", &filetype) 21 call assert_true(getline('.') =~ '\*star\*') 22 helpclose 23 24 help "* 25 call assert_equal("help", &filetype) 26 call assert_true(getline('.') =~ '\*quotestar\*') 27 helpclose 28 29 " help sm?le 30 help ch?ckhealth 31 call assert_equal("help", &filetype) 32 " call assert_true(getline('.') =~ '\*:smile\*') 33 call assert_true(getline('.') =~ '\*:checkhealth\*') 34 helpclose 35 36 help ?? 37 call assert_equal("help", &filetype) 38 call assert_true(getline('.') =~ '\*??\*') 39 helpclose 40 41 help :? 42 call assert_equal("help", &filetype) 43 call assert_true(getline('.') =~ '\*:?\*') 44 helpclose 45 46 help q? 47 call assert_equal("help", &filetype) 48 call assert_true(getline('.') =~ '\*q?\*') 49 call assert_true(expand('<cword>') == 'q?') 50 helpclose 51 52 help -? 53 call assert_equal("help", &filetype) 54 call assert_true(getline('.') =~ '\*-?\*') 55 helpclose 56 57 help v_g? 58 call assert_equal("help", &filetype) 59 call assert_true(getline('.') =~ '\*v_g?\*') 60 helpclose 61 62 help expr-!=? 63 call assert_equal("help", &filetype) 64 call assert_true(getline('.') =~ '\*expr-!=?\*') 65 call assert_true(expand('<cword>') == 'expr-!=?') 66 helpclose 67 68 help expr-isnot? 69 call assert_equal("help", &filetype) 70 call assert_true(getline('.') =~ '\*expr-isnot?\*') 71 call assert_true(expand('<cword>') == 'expr-isnot?') 72 helpclose 73 74 help FileW*Post 75 call assert_equal("help", &filetype) 76 call assert_true(getline('.') =~ '\*FileWritePost\*') 77 helpclose 78 79 help `ls` 80 call assert_equal("help", &filetype) 81 call assert_true(getline('.') =~ '\*:ls\*') 82 helpclose 83 84 help ^X 85 call assert_equal("help", &filetype) 86 call assert_true(getline('.') =~ '\*CTRL-X\*') 87 helpclose 88 89 help i_^_CTRL-D 90 call assert_equal("help", &filetype) 91 call assert_true(getline('.') =~ '\*i_^_CTRL-D\*') 92 helpclose 93 94 help i^x^y 95 call assert_equal("help", &filetype) 96 call assert_true(getline('.') =~ '\*i_CTRL-X_CTRL-Y\*') 97 helpclose 98 99 exe "help i\<C-\>\<C-G>" 100 call assert_equal("help", &filetype) 101 call assert_true(getline('.') =~ '\*i_CTRL-\\_CTRL-G\*') 102 helpclose 103 104 exec "help \<C-V>" 105 call assert_equal("help", &filetype) 106 call assert_true(getline('.') =~ '\*CTRL-V\*') 107 helpclose 108 109 help /\| 110 call assert_equal("help", &filetype) 111 call assert_true(getline('.') =~ '\*/\\bar\*') 112 helpclose 113 114 help \_$ 115 call assert_equal("help", &filetype) 116 call assert_true(getline('.') =~ '\*/\\_$\*') 117 helpclose 118 119 help CTRL-\_CTRL-N 120 call assert_equal("help", &filetype) 121 call assert_true(getline('.') =~ '\*CTRL-\\_CTRL-N\*') 122 helpclose 123 124 help `:pwd`, 125 call assert_equal("help", &filetype) 126 call assert_true(getline('.') =~ '\*:pwd\*') 127 helpclose 128 129 help `:ls`. 130 call assert_equal("help", &filetype) 131 call assert_true(getline('.') =~ '\*:ls\*') 132 helpclose 133 134 exec "help! ('textwidth'" 135 call assert_equal("help", &filetype) 136 call assert_true(getline('.') =~ "\\*'textwidth'\\*") 137 helpclose 138 139 exec "help! ('buflisted')," 140 call assert_equal("help", &filetype) 141 call assert_true(getline('.') =~ "\\*'buflisted'\\*") 142 helpclose 143 144 exec "help! abs({expr})" 145 call assert_equal("help", &filetype) 146 call assert_true(getline('.') =~ '\*abs()\*') 147 helpclose 148 149 exec "help! arglistid([{winnr})" 150 call assert_equal("help", &filetype) 151 call assert_true(getline('.') =~ '\*arglistid()\*') 152 helpclose 153 154 exec "help! 'autoindent'." 155 call assert_equal("help", &filetype) 156 call assert_true(getline('.') =~ "\\*'autoindent'\\*") 157 helpclose 158 159 exec "help! {address}." 160 call assert_equal("help", &filetype) 161 call assert_true(getline('.') =~ '\*{address}\*') 162 helpclose 163 164 " Use special patterns in the help tag 165 for h in ['/\w', '/\%^', '/\%(', '/\zs', '/\@<=', '/\_$', '[++opt]', '/\{'] 166 exec "help! " . h 167 call assert_equal("help", &filetype) 168 let pat = '\*' . escape(h, '\$[') . '\*' 169 call assert_true(getline('.') =~ pat, pat) 170 helpclose 171 endfor 172 173 exusage 174 call assert_equal("help", &filetype) 175 call assert_true(getline('.') =~ '\*:index\*') 176 helpclose 177 178 viusage 179 call assert_equal("help", &filetype) 180 call assert_true(getline('.') =~ '\*normal-index\*') 181 helpclose 182 endfunc 183 184 let s:langs = ['en', 'ab', 'ja'] 185 186 func s:doc_config_setup() 187 let s:helpfile_save = &helpfile 188 let &helpfile="Xdocdir1/doc-en/doc/testdoc.txt" 189 let s:rtp_save = &rtp 190 let &rtp="Xdocdir1/doc-en" 191 if has('multi_lang') 192 let s:helplang_save=&helplang 193 endif 194 195 call delete('Xdocdir1', 'rf') 196 197 for lang in s:langs 198 if lang ==# 'en' 199 let tagfname = 'tags' 200 let docfname = 'testdoc.txt' 201 else 202 let tagfname = 'tags-' . lang 203 let docfname = 'testdoc.' . lang . 'x' 204 endif 205 let docdir = "Xdocdir1/doc-" . lang . "/doc" 206 call mkdir(docdir, "p") 207 call writefile(["\t*test-char*", "\t*test-col*"], docdir . '/' . docfname) 208 call writefile(["test-char\t" . docfname . "\t/*test-char*", 209 \ "test-col\t" . docfname . "\t/*test-col*"], 210 \ docdir . '/' . tagfname) 211 endfor 212 endfunc 213 214 func s:doc_config_teardown() 215 call delete('Xdocdir1', 'rf') 216 217 let &helpfile = s:helpfile_save 218 let &rtp = s:rtp_save 219 if has('multi_lang') 220 let &helplang = s:helplang_save 221 endif 222 endfunc 223 224 func s:get_help_compl_list(cmd) 225 return getcompletion(a:cmd, 'help') 226 endfunc 227 228 func Test_help_complete() 229 try 230 let list = [] 231 call s:doc_config_setup() 232 233 " 'helplang=' and help file lang is 'en' 234 if has('multi_lang') 235 set helplang= 236 endif 237 let list = s:get_help_compl_list("test") 238 call assert_equal(['test-col', 'test-char'], list) 239 240 if has('multi_lang') 241 " 'helplang=ab' and help file lang is 'en' 242 set helplang=ab 243 let list = s:get_help_compl_list("test") 244 call assert_equal(['test-col', 'test-char'], list) 245 246 " 'helplang=' and help file lang is 'en' and 'ab' 247 set rtp+=Xdocdir1/doc-ab 248 set helplang= 249 let list = s:get_help_compl_list("test") 250 call assert_equal(sort(['test-col@en', 'test-col@ab', 251 \ 'test-char@en', 'test-char@ab']), sort(list)) 252 253 " 'helplang=ab' and help file lang is 'en' and 'ab' 254 set helplang=ab 255 let list = s:get_help_compl_list("test") 256 call assert_equal(sort(['test-col', 'test-col@en', 257 \ 'test-char', 'test-char@en']), sort(list)) 258 259 " 'helplang=' and help file lang is 'en', 'ab' and 'ja' 260 set rtp+=Xdocdir1/doc-ja 261 set helplang= 262 let list = s:get_help_compl_list("test") 263 call assert_equal(sort(['test-col@en', 'test-col@ab', 264 \ 'test-col@ja', 'test-char@en', 265 \ 'test-char@ab', 'test-char@ja']), sort(list)) 266 267 " 'helplang=ab' and help file lang is 'en', 'ab' and 'ja' 268 set helplang=ab 269 let list = s:get_help_compl_list("test") 270 call assert_equal(sort(['test-col', 'test-col@en', 271 \ 'test-col@ja', 'test-char', 272 \ 'test-char@en', 'test-char@ja']), sort(list)) 273 274 " 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja' 275 set helplang=ab,ja 276 let list = s:get_help_compl_list("test") 277 call assert_equal(sort(['test-col', 'test-col@ja', 278 \ 'test-col@en', 'test-char', 279 \ 'test-char@ja', 'test-char@en']), sort(list)) 280 endif 281 catch 282 call assert_exception('X') 283 finally 284 call s:doc_config_teardown() 285 endtry 286 endfunc 287 288 func Test_help_respect_current_file_lang() 289 try 290 let list = [] 291 call s:doc_config_setup() 292 293 if has('multi_lang') 294 function s:check_help_file_ext(help_keyword, ext) 295 exec 'help ' . a:help_keyword 296 call assert_equal(a:ext, expand('%:e')) 297 call feedkeys("\<C-]>", 'tx') 298 call assert_equal(a:ext, expand('%:e')) 299 pop 300 helpclose 301 endfunc 302 303 set rtp+=Xdocdir1/doc-ab 304 set rtp+=Xdocdir1/doc-ja 305 306 set helplang=ab 307 call s:check_help_file_ext('test-char', 'abx') 308 call s:check_help_file_ext('test-char@ja', 'jax') 309 set helplang=ab,ja 310 call s:check_help_file_ext('test-char@ja', 'jax') 311 call s:check_help_file_ext('test-char@en', 'txt') 312 endif 313 catch 314 call assert_exception('X') 315 finally 316 call s:doc_config_teardown() 317 endtry 318 endfunc 319 320 " vim: shiftwidth=2 sts=2 expandtab