blob: f03450816b52b89f4bdcd5a335ea41cd29acb965 [file] [log] [blame]
Bram Moolenaar63a60de2016-06-04 22:08:55 +02001" Tests for user defined commands
2
3" Test for <mods> in user defined commands
4function Test_cmdmods()
5 let g:mods = ''
6
7 command! -nargs=* MyCmd let g:mods .= '<mods> '
8
9 MyCmd
10 aboveleft MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020011 abo MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020012 belowright MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020013 bel MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020014 botright MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020015 bo MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020016 browse MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020017 bro MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020018 confirm MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020019 conf MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020020 hide MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020021 hid MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020022 keepalt MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020023 keepa MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020024 keepjumps MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020025 keepj MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020026 keepmarks MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020027 kee MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020028 keeppatterns MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020029 keepp MyCmd
30 leftabove MyCmd " results in :aboveleft
31 lefta MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020032 lockmarks MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020033 loc MyCmd
34 " noautocmd MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020035 noswapfile MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020036 nos MyCmd
37 rightbelow MyCmd " results in :belowright
38 rightb MyCmd
39 " sandbox MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020040 silent MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020041 sil MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020042 tab MyCmd
43 topleft MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020044 to MyCmd
45 " unsilent MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020046 verbose MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020047 verb MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020048 vertical MyCmd
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020049 vert MyCmd
Bram Moolenaar63a60de2016-06-04 22:08:55 +020050
51 aboveleft belowright botright browse confirm hide keepalt keepjumps
52 \ keepmarks keeppatterns lockmarks noswapfile silent tab
53 \ topleft verbose vertical MyCmd
54
Bram Moolenaar3bcfca32016-07-30 19:39:29 +020055 call assert_equal(' aboveleft aboveleft belowright belowright botright ' .
56 \ 'botright browse browse confirm confirm hide hide ' .
57 \ 'keepalt keepalt keepjumps keepjumps keepmarks keepmarks ' .
58 \ 'keeppatterns keeppatterns aboveleft aboveleft lockmarks lockmarks noswapfile ' .
59 \ 'noswapfile belowright belowright silent silent tab topleft topleft verbose verbose ' .
60 \ 'vertical vertical ' .
61 \ 'aboveleft belowright botright browse confirm hide keepalt keepjumps ' .
Bram Moolenaar63a60de2016-06-04 22:08:55 +020062 \ 'keepmarks keeppatterns lockmarks noswapfile silent tab topleft ' .
63 \ 'verbose vertical ', g:mods)
64
65 let g:mods = ''
66 command! -nargs=* MyQCmd let g:mods .= '<q-mods> '
67
68 vertical MyQCmd
69 call assert_equal('"vertical" ', g:mods)
70
71 delcommand MyCmd
72 delcommand MyQCmd
73 unlet g:mods
74endfunction
Bram Moolenaareac784e2016-07-28 22:08:24 +020075
Bram Moolenaare61e5482019-04-27 15:05:12 +020076func SaveCmdArgs(...)
77 let g:args = a:000
78endfunc
79
80func Test_f_args()
81 command -nargs=* TestFArgs call SaveCmdArgs(<f-args>)
82
83 TestFArgs
84 call assert_equal([], g:args)
85
86 TestFArgs one two three
87 call assert_equal(['one', 'two', 'three'], g:args)
88
89 TestFArgs one\\two three
90 call assert_equal(['one\two', 'three'], g:args)
91
92 TestFArgs one\ two three
93 call assert_equal(['one two', 'three'], g:args)
94
95 TestFArgs one\"two three
96 call assert_equal(['one\"two', 'three'], g:args)
97
98 delcommand TestFArgs
99endfunc
100
101func Test_q_args()
102 command -nargs=* TestQArgs call SaveCmdArgs(<q-args>)
103
104 TestQArgs
105 call assert_equal([''], g:args)
106
107 TestQArgs one two three
108 call assert_equal(['one two three'], g:args)
109
110 TestQArgs one\\two three
111 call assert_equal(['one\\two three'], g:args)
112
113 TestQArgs one\ two three
114 call assert_equal(['one\ two three'], g:args)
115
116 TestQArgs one\"two three
117 call assert_equal(['one\"two three'], g:args)
118
119 delcommand TestQArgs
120endfunc
121
122func Test_reg_arg()
123 command -nargs=* -reg TestRegArg call SaveCmdArgs("<reg>", "<register>")
124
125 TestRegArg
126 call assert_equal(['', ''], g:args)
127
128 TestRegArg x
129 call assert_equal(['x', 'x'], g:args)
130
131 delcommand TestRegArg
132endfunc
133
134func Test_no_arg()
135 command -nargs=* TestNoArg call SaveCmdArgs("<args>", "<>", "<x>", "<lt>")
136
137 TestNoArg
138 call assert_equal(['', '<>', '<x>', '<'], g:args)
139
140 TestNoArg one
141 call assert_equal(['one', '<>', '<x>', '<'], g:args)
142
143 delcommand TestNoArg
144endfunc
145
146func Test_range_arg()
147 command -range TestRangeArg call SaveCmdArgs(<range>, <line1>, <line2>)
148 new
149 call setline(1, range(100))
150 let lnum = line('.')
151
152 TestRangeArg
153 call assert_equal([0, lnum, lnum], g:args)
154
155 99TestRangeArg
156 call assert_equal([1, 99, 99], g:args)
157
158 88,99TestRangeArg
159 call assert_equal([2, 88, 99], g:args)
160
161 call assert_fails('102TestRangeArg', 'E16:')
162
163 bwipe!
164 delcommand TestRangeArg
165endfunc
166
Bram Moolenaareac784e2016-07-28 22:08:24 +0200167func Test_Ambiguous()
168 command Doit let g:didit = 'yes'
169 command Dothat let g:didthat = 'also'
170 call assert_fails('Do', 'E464:')
171 Doit
172 call assert_equal('yes', g:didit)
173 Dothat
174 call assert_equal('also', g:didthat)
175 unlet g:didit
176 unlet g:didthat
177
178 delcommand Doit
179 Do
180 call assert_equal('also', g:didthat)
181 delcommand Dothat
Bram Moolenaare61e5482019-04-27 15:05:12 +0200182
183 call assert_fails("\x4ei\041", ' you demand a ')
Bram Moolenaareac784e2016-07-28 22:08:24 +0200184endfunc
185
Bram Moolenaar55d46912018-12-08 16:03:28 +0100186func Test_redefine_on_reload()
187 call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists')
188 call assert_equal(0, exists(':ExistingCommand'))
189 source Xcommandexists
190 call assert_equal(2, exists(':ExistingCommand'))
191 " Redefining a command when reloading a script is OK.
192 source Xcommandexists
193 call assert_equal(2, exists(':ExistingCommand'))
194
195 " But redefining in another script is not OK.
196 call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists2')
197 call assert_fails('source Xcommandexists2', 'E174:')
198 call delete('Xcommandexists2')
199
200 " And defining twice in one script is not OK.
201 delcommand ExistingCommand
202 call assert_equal(0, exists(':ExistingCommand'))
203 call writefile([
204 \ 'command ExistingCommand echo "yes"',
205 \ 'command ExistingCommand echo "no"',
206 \ ], 'Xcommandexists')
207 call assert_fails('source Xcommandexists', 'E174:')
208 call assert_equal(2, exists(':ExistingCommand'))
209
210 call delete('Xcommandexists')
211 delcommand ExistingCommand
212endfunc
213
Bram Moolenaareac784e2016-07-28 22:08:24 +0200214func Test_CmdUndefined()
215 call assert_fails('Doit', 'E492:')
216 au CmdUndefined Doit :command Doit let g:didit = 'yes'
217 Doit
218 call assert_equal('yes', g:didit)
219 delcommand Doit
220
221 call assert_fails('Dothat', 'E492:')
222 au CmdUndefined * let g:didnot = 'yes'
223 call assert_fails('Dothat', 'E492:')
224 call assert_equal('yes', g:didnot)
225endfunc
Bram Moolenaar65c836e2017-01-26 22:07:33 +0100226
227func Test_CmdErrors()
228 call assert_fails('com! docmd :', 'E183:')
229 call assert_fails('com! \<Tab> :', 'E182:')
230 call assert_fails('com! _ :', 'E182:')
231 call assert_fails('com! X :', 'E841:')
232 call assert_fails('com! - DoCmd :', 'E175:')
233 call assert_fails('com! -xxx DoCmd :', 'E181:')
234 call assert_fails('com! -addr DoCmd :', 'E179:')
Bram Moolenaare61e5482019-04-27 15:05:12 +0200235 call assert_fails('com! -addr=asdf DoCmd :', 'E180:')
Bram Moolenaar65c836e2017-01-26 22:07:33 +0100236 call assert_fails('com! -complete DoCmd :', 'E179:')
237 call assert_fails('com! -complete=xxx DoCmd :', 'E180:')
238 call assert_fails('com! -complete=custom DoCmd :', 'E467:')
239 call assert_fails('com! -complete=customlist DoCmd :', 'E467:')
240 call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:')
241 call assert_fails('com! -nargs=x DoCmd :', 'E176:')
242 call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:')
243 call assert_fails('com! -count=x DoCmd :', 'E178:')
244 call assert_fails('com! -range=x DoCmd :', 'E178:')
245
246 com! -nargs=0 DoCmd :
247 call assert_fails('DoCmd x', 'E488:')
248
249 com! -nargs=1 DoCmd :
250 call assert_fails('DoCmd', 'E471:')
251
252 com! -nargs=+ DoCmd :
253 call assert_fails('DoCmd', 'E471:')
254
255 call assert_fails('com DoCmd :', 'E174:')
256 comclear
257 call assert_fails('delcom DoCmd', 'E184:')
258endfunc
259
260func CustomComplete(A, L, P)
261 return "January\nFebruary\nMars\n"
262endfunc
263
264func CustomCompleteList(A, L, P)
Bram Moolenaar24ebd832020-03-16 21:25:24 +0100265 return [ "Monday", "Tuesday", "Wednesday", {}]
Bram Moolenaar65c836e2017-01-26 22:07:33 +0100266endfunc
267
268func Test_CmdCompletion()
269 call feedkeys(":com -\<C-A>\<C-B>\"\<CR>", 'tx')
270 call assert_equal('"com -addr bang bar buffer complete count nargs range register', @:)
271
272 call feedkeys(":com -nargs=0 -\<C-A>\<C-B>\"\<CR>", 'tx')
273 call assert_equal('"com -nargs=0 -addr bang bar buffer complete count nargs range register', @:)
274
275 call feedkeys(":com -nargs=\<C-A>\<C-B>\"\<CR>", 'tx')
276 call assert_equal('"com -nargs=* + 0 1 ?', @:)
277
278 call feedkeys(":com -addr=\<C-A>\<C-B>\"\<CR>", 'tx')
Bram Moolenaar51a74542018-12-02 18:21:49 +0100279 call assert_equal('"com -addr=arguments buffers lines loaded_buffers other quickfix tabs windows', @:)
Bram Moolenaar65c836e2017-01-26 22:07:33 +0100280
281 call feedkeys(":com -complete=co\<C-A>\<C-B>\"\<CR>", 'tx')
282 call assert_equal('"com -complete=color command compiler', @:)
283
284 command! DoCmd1 :
285 command! DoCmd2 :
286 call feedkeys(":com \<C-A>\<C-B>\"\<CR>", 'tx')
287 call assert_equal('"com DoCmd1 DoCmd2', @:)
288
289 call feedkeys(":DoC\<C-A>\<C-B>\"\<CR>", 'tx')
290 call assert_equal('"DoCmd1 DoCmd2', @:)
291
292 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
293 call assert_equal('"delcom DoCmd1 DoCmd2', @:)
294
295 delcom DoCmd1
296 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
297 call assert_equal('"delcom DoCmd2', @:)
298
299 call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
300 call assert_equal('"com DoCmd2', @:)
301
302 delcom DoCmd2
303 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
304 call assert_equal('"delcom DoC', @:)
305
306 call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
307 call assert_equal('"com DoC', @:)
308
309 com! -complete=behave DoCmd :
310 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
311 call assert_equal('"DoCmd mswin xterm', @:)
312
313 " This does not work. Why?
314 "call feedkeys(":DoCmd x\<C-A>\<C-B>\"\<CR>", 'tx')
315 "call assert_equal('"DoCmd xterm', @:)
316
317 com! -complete=custom,CustomComplete DoCmd :
318 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
319 call assert_equal('"DoCmd January February Mars', @:)
320
321 com! -complete=customlist,CustomCompleteList DoCmd :
322 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
323 call assert_equal('"DoCmd Monday Tuesday Wednesday', @:)
324
325 com! -complete=custom,CustomCompleteList DoCmd :
326 call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E730:')
327
328 com! -complete=customlist,CustomComp DoCmd :
329 call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E117:')
Bram Moolenaar24ebd832020-03-16 21:25:24 +0100330
331 " custom completion without a function
332 com! -complete=custom, DoCmd
333 call assert_beeps("call feedkeys(':DoCmd \t', 'tx')")
334
335 delcom DoCmd
Bram Moolenaar65c836e2017-01-26 22:07:33 +0100336endfunc
Bram Moolenaar20951482017-12-25 13:44:43 +0100337
338func CallExecute(A, L, P)
339 " Drop first '\n'
340 return execute('echo "hi"')[1:]
341endfunc
342
343func Test_use_execute_in_completion()
344 command! -nargs=* -complete=custom,CallExecute DoExec :
345 call feedkeys(":DoExec \<C-A>\<C-B>\"\<CR>", 'tx')
346 call assert_equal('"DoExec hi', @:)
347 delcommand DoExec
348endfunc
Bram Moolenaar51a74542018-12-02 18:21:49 +0100349
350func Test_addr_all()
351 command! -addr=lines DoSomething let g:a1 = <line1> | let g:a2 = <line2>
352 %DoSomething
353 call assert_equal(1, g:a1)
354 call assert_equal(line('$'), g:a2)
355
356 command! -addr=arguments DoSomething let g:a1 = <line1> | let g:a2 = <line2>
357 args one two three
358 %DoSomething
359 call assert_equal(1, g:a1)
360 call assert_equal(3, g:a2)
361
362 command! -addr=buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
363 %DoSomething
364 for low in range(1, bufnr('$'))
365 if buflisted(low)
366 break
367 endif
368 endfor
369 call assert_equal(low, g:a1)
370 call assert_equal(bufnr('$'), g:a2)
371
372 command! -addr=loaded_buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
373 %DoSomething
374 for low in range(1, bufnr('$'))
375 if bufloaded(low)
376 break
377 endif
378 endfor
379 call assert_equal(low, g:a1)
380 for up in range(bufnr('$'), 1, -1)
381 if bufloaded(up)
382 break
383 endif
384 endfor
385 call assert_equal(up, g:a2)
386
387 command! -addr=windows DoSomething let g:a1 = <line1> | let g:a2 = <line2>
388 new
389 %DoSomething
390 call assert_equal(1, g:a1)
391 call assert_equal(winnr('$'), g:a2)
392 bwipe
393
394 command! -addr=tabs DoSomething let g:a1 = <line1> | let g:a2 = <line2>
395 tabnew
396 %DoSomething
397 call assert_equal(1, g:a1)
398 call assert_equal(len(gettabinfo()), g:a2)
399 bwipe
400
Bram Moolenaarb7316892019-05-01 18:08:42 +0200401 command! -addr=other DoSomething let g:a1 = <line1> | let g:a2 = <line2>
Bram Moolenaar51a74542018-12-02 18:21:49 +0100402 DoSomething
Bram Moolenaarb7316892019-05-01 18:08:42 +0200403 call assert_equal(line('.'), g:a1)
404 call assert_equal(line('.'), g:a2)
405 %DoSomething
406 call assert_equal(1, g:a1)
407 call assert_equal(line('$'), g:a2)
Bram Moolenaar51a74542018-12-02 18:21:49 +0100408
409 delcommand DoSomething
410endfunc
Bram Moolenaard1f90bb2019-04-25 22:42:07 +0200411
412func Test_command_list()
413 command! DoCmd :
414 call assert_equal("\n Name Args Address Complete Definition"
415 \ .. "\n DoCmd 0 :",
416 \ execute('command DoCmd'))
417
418 " Test with various -range= and -count= argument values.
419 command! -range DoCmd :
420 call assert_equal("\n Name Args Address Complete Definition"
421 \ .. "\n DoCmd 0 . :",
422 \ execute('command DoCmd'))
423 command! -range=% DoCmd :
424 call assert_equal("\n Name Args Address Complete Definition"
425 \ .. "\n DoCmd 0 % :",
426 \ execute('command! DoCmd'))
427 command! -range=2 DoCmd :
428 call assert_equal("\n Name Args Address Complete Definition"
429 \ .. "\n DoCmd 0 2 :",
430 \ execute('command DoCmd'))
431 command! -count=2 DoCmd :
432 call assert_equal("\n Name Args Address Complete Definition"
Bram Moolenaarb7316892019-05-01 18:08:42 +0200433 \ .. "\n DoCmd 0 2c ? :",
Bram Moolenaard1f90bb2019-04-25 22:42:07 +0200434 \ execute('command DoCmd'))
435
436 " Test with various -addr= argument values.
437 command! -addr=lines DoCmd :
438 call assert_equal("\n Name Args Address Complete Definition"
439 \ .. "\n DoCmd 0 . :",
440 \ execute('command DoCmd'))
441 command! -addr=arguments DoCmd :
442 call assert_equal("\n Name Args Address Complete Definition"
443 \ .. "\n DoCmd 0 . arg :",
444 \ execute('command DoCmd'))
445 command! -addr=buffers DoCmd :
446 call assert_equal("\n Name Args Address Complete Definition"
447 \ .. "\n DoCmd 0 . buf :",
448 \ execute('command DoCmd'))
449 command! -addr=loaded_buffers DoCmd :
450 call assert_equal("\n Name Args Address Complete Definition"
451 \ .. "\n DoCmd 0 . load :",
452 \ execute('command DoCmd'))
453 command! -addr=windows DoCmd :
454 call assert_equal("\n Name Args Address Complete Definition"
455 \ .. "\n DoCmd 0 . win :",
456 \ execute('command DoCmd'))
457 command! -addr=tabs DoCmd :
458 call assert_equal("\n Name Args Address Complete Definition"
459 \ .. "\n DoCmd 0 . tab :",
460 \ execute('command DoCmd'))
461 command! -addr=other DoCmd :
462 call assert_equal("\n Name Args Address Complete Definition"
463 \ .. "\n DoCmd 0 . ? :",
464 \ execute('command DoCmd'))
465
466 " Test with various -complete= argument values (non-exhaustive list)
467 command! -complete=arglist DoCmd :
468 call assert_equal("\n Name Args Address Complete Definition"
469 \ .. "\n DoCmd 0 arglist :",
470 \ execute('command DoCmd'))
471 command! -complete=augroup DoCmd :
472 call assert_equal("\n Name Args Address Complete Definition"
473 \ .. "\n DoCmd 0 augroup :",
474 \ execute('command DoCmd'))
475 command! -complete=custom,CustomComplete DoCmd :
476 call assert_equal("\n Name Args Address Complete Definition"
477 \ .. "\n DoCmd 0 custom :",
478 \ execute('command DoCmd'))
479 command! -complete=customlist,CustomComplete DoCmd :
480 call assert_equal("\n Name Args Address Complete Definition"
481 \ .. "\n DoCmd 0 customlist :",
482 \ execute('command DoCmd'))
483
484 " Test with various -narg= argument values.
485 command! -nargs=0 DoCmd :
486 call assert_equal("\n Name Args Address Complete Definition"
487 \ .. "\n DoCmd 0 :",
488 \ execute('command DoCmd'))
489 command! -nargs=1 DoCmd :
490 call assert_equal("\n Name Args Address Complete Definition"
491 \ .. "\n DoCmd 1 :",
492 \ execute('command DoCmd'))
493 command! -nargs=* DoCmd :
494 call assert_equal("\n Name Args Address Complete Definition"
495 \ .. "\n DoCmd * :",
496 \ execute('command DoCmd'))
497 command! -nargs=? DoCmd :
498 call assert_equal("\n Name Args Address Complete Definition"
499 \ .. "\n DoCmd ? :",
500 \ execute('command DoCmd'))
501 command! -nargs=+ DoCmd :
502 call assert_equal("\n Name Args Address Complete Definition"
503 \ .. "\n DoCmd + :",
504 \ execute('command DoCmd'))
505
506 " Test with other arguments.
507 command! -bang DoCmd :
508 call assert_equal("\n Name Args Address Complete Definition"
509 \ .. "\n! DoCmd 0 :",
510 \ execute('command DoCmd'))
511 command! -bar DoCmd :
512 call assert_equal("\n Name Args Address Complete Definition"
513 \ .. "\n| DoCmd 0 :",
514 \ execute('command DoCmd'))
515 command! -register DoCmd :
516 call assert_equal("\n Name Args Address Complete Definition"
517 \ .. "\n\" DoCmd 0 :",
518 \ execute('command DoCmd'))
519 command! -buffer DoCmd :
520 call assert_equal("\n Name Args Address Complete Definition"
521 \ .. "\nb DoCmd 0 :"
522 \ .. "\n\" DoCmd 0 :",
523 \ execute('command DoCmd'))
524 comclear
525
526 " Test with many args.
527 command! -bang -bar -register -buffer -nargs=+ -complete=environment -addr=windows -count=3 DoCmd :
528 call assert_equal("\n Name Args Address Complete Definition"
529 \ .. "\n!\"b|DoCmd + 3c win environment :",
530 \ execute('command DoCmd'))
531 comclear
532
533 " Test with special characters in command definition.
534 command! DoCmd :<cr><tab><c-d>
535 call assert_equal("\n Name Args Address Complete Definition"
536 \ .. "\n DoCmd 0 :<CR><Tab><C-D>",
537 \ execute('command DoCmd'))
538
539 " Test output in verbose mode.
540 command! DoCmd :
541 call assert_match("^\n"
542 \ .. " Name Args Address Complete Definition\n"
543 \ .. " DoCmd 0 :\n"
544 \ .. "\tLast set from .*/test_usercommands.vim line \\d\\+$",
545 \ execute('verbose command DoCmd'))
546
547 comclear
548 call assert_equal("\nNo user-defined commands found", execute(':command Xxx'))
549 call assert_equal("\nNo user-defined commands found", execute('command'))
550endfunc
Bram Moolenaar24ebd832020-03-16 21:25:24 +0100551
552" vim: shiftwidth=2 sts=2 expandtab