Skip to content

Commit 65c836e

Browse files
committed
patch 8.0.0242: no tests for user command completion
Problem: Completion of user defined functions is not covered by tests. Solution: Add tests. Also test various errors of user-defined commands. (Dominique Pelle, closes #1413)
1 parent 52c0de1 commit 65c836e

2 files changed

Lines changed: 106 additions & 0 deletions

File tree

src/testdir/test_usercommands.vim

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,107 @@ func Test_CmdUndefined()
102102
call assert_fails('Dothat', 'E492:')
103103
call assert_equal('yes', g:didnot)
104104
endfunc
105+
106+
func Test_CmdErrors()
107+
call assert_fails('com! docmd :', 'E183:')
108+
call assert_fails('com! \<Tab> :', 'E182:')
109+
call assert_fails('com! _ :', 'E182:')
110+
call assert_fails('com! X :', 'E841:')
111+
call assert_fails('com! - DoCmd :', 'E175:')
112+
call assert_fails('com! -xxx DoCmd :', 'E181:')
113+
call assert_fails('com! -addr DoCmd :', 'E179:')
114+
call assert_fails('com! -complete DoCmd :', 'E179:')
115+
call assert_fails('com! -complete=xxx DoCmd :', 'E180:')
116+
call assert_fails('com! -complete=custom DoCmd :', 'E467:')
117+
call assert_fails('com! -complete=customlist DoCmd :', 'E467:')
118+
call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:')
119+
call assert_fails('com! -nargs=x DoCmd :', 'E176:')
120+
call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:')
121+
call assert_fails('com! -count=x DoCmd :', 'E178:')
122+
call assert_fails('com! -range=x DoCmd :', 'E178:')
123+
124+
com! -nargs=0 DoCmd :
125+
call assert_fails('DoCmd x', 'E488:')
126+
127+
com! -nargs=1 DoCmd :
128+
call assert_fails('DoCmd', 'E471:')
129+
130+
com! -nargs=+ DoCmd :
131+
call assert_fails('DoCmd', 'E471:')
132+
133+
call assert_fails('com DoCmd :', 'E174:')
134+
comclear
135+
call assert_fails('delcom DoCmd', 'E184:')
136+
endfunc
137+
138+
func CustomComplete(A, L, P)
139+
return "January\nFebruary\nMars\n"
140+
endfunc
141+
142+
func CustomCompleteList(A, L, P)
143+
return [ "Monday", "Tuesday", "Wednesday" ]
144+
endfunc
145+
146+
func Test_CmdCompletion()
147+
call feedkeys(":com -\<C-A>\<C-B>\"\<CR>", 'tx')
148+
call assert_equal('"com -addr bang bar buffer complete count nargs range register', @:)
149+
150+
call feedkeys(":com -nargs=0 -\<C-A>\<C-B>\"\<CR>", 'tx')
151+
call assert_equal('"com -nargs=0 -addr bang bar buffer complete count nargs range register', @:)
152+
153+
call feedkeys(":com -nargs=\<C-A>\<C-B>\"\<CR>", 'tx')
154+
call assert_equal('"com -nargs=* + 0 1 ?', @:)
155+
156+
call feedkeys(":com -addr=\<C-A>\<C-B>\"\<CR>", 'tx')
157+
call assert_equal('"com -addr=arguments buffers lines loaded_buffers quickfix tabs windows', @:)
158+
159+
call feedkeys(":com -complete=co\<C-A>\<C-B>\"\<CR>", 'tx')
160+
call assert_equal('"com -complete=color command compiler', @:)
161+
162+
command! DoCmd1 :
163+
command! DoCmd2 :
164+
call feedkeys(":com \<C-A>\<C-B>\"\<CR>", 'tx')
165+
call assert_equal('"com DoCmd1 DoCmd2', @:)
166+
167+
call feedkeys(":DoC\<C-A>\<C-B>\"\<CR>", 'tx')
168+
call assert_equal('"DoCmd1 DoCmd2', @:)
169+
170+
call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
171+
call assert_equal('"delcom DoCmd1 DoCmd2', @:)
172+
173+
delcom DoCmd1
174+
call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
175+
call assert_equal('"delcom DoCmd2', @:)
176+
177+
call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
178+
call assert_equal('"com DoCmd2', @:)
179+
180+
delcom DoCmd2
181+
call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
182+
call assert_equal('"delcom DoC', @:)
183+
184+
call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
185+
call assert_equal('"com DoC', @:)
186+
187+
com! -complete=behave DoCmd :
188+
call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
189+
call assert_equal('"DoCmd mswin xterm', @:)
190+
191+
" This does not work. Why?
192+
"call feedkeys(":DoCmd x\<C-A>\<C-B>\"\<CR>", 'tx')
193+
"call assert_equal('"DoCmd xterm', @:)
194+
195+
com! -complete=custom,CustomComplete DoCmd :
196+
call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
197+
call assert_equal('"DoCmd January February Mars', @:)
198+
199+
com! -complete=customlist,CustomCompleteList DoCmd :
200+
call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
201+
call assert_equal('"DoCmd Monday Tuesday Wednesday', @:)
202+
203+
com! -complete=custom,CustomCompleteList DoCmd :
204+
call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E730:')
205+
206+
com! -complete=customlist,CustomComp DoCmd :
207+
call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E117:')
208+
endfunc

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,8 @@ static char *(features[]) =
764764

765765
static int included_patches[] =
766766
{ /* Add new patch number below this line */
767+
/**/
768+
242,
767769
/**/
768770
241,
769771
/**/

0 commit comments

Comments
 (0)