summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-04-27 15:05:12 +0200
committerBram Moolenaar <Bram@vim.org>2019-04-27 15:05:12 +0200
commite61e548dd6a20471fd81160b1c2a16089505ec8c (patch)
tree56eaba3c3338c605195f7067d3bc4b7e62933f6e
parentac9fb18020d7e8bf16d02d45fbb02cf47328aaf7 (diff)
downloadvim-git-e61e548dd6a20471fd81160b1c2a16089505ec8c.tar.gz
patch 8.1.1211: not all user command code is testedv8.1.1211
Problem: Not all user command code is tested. Solution: Add more tests.
-rw-r--r--src/testdir/test_usercommands.vim94
-rw-r--r--src/version.c2
2 files changed, 96 insertions, 0 deletions
diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim
index 3b87d367d..2e2490eb2 100644
--- a/src/testdir/test_usercommands.vim
+++ b/src/testdir/test_usercommands.vim
@@ -73,6 +73,97 @@ function Test_cmdmods()
unlet g:mods
endfunction
+func SaveCmdArgs(...)
+ let g:args = a:000
+endfunc
+
+func Test_f_args()
+ command -nargs=* TestFArgs call SaveCmdArgs(<f-args>)
+
+ TestFArgs
+ call assert_equal([], g:args)
+
+ TestFArgs one two three
+ call assert_equal(['one', 'two', 'three'], g:args)
+
+ TestFArgs one\\two three
+ call assert_equal(['one\two', 'three'], g:args)
+
+ TestFArgs one\ two three
+ call assert_equal(['one two', 'three'], g:args)
+
+ TestFArgs one\"two three
+ call assert_equal(['one\"two', 'three'], g:args)
+
+ delcommand TestFArgs
+endfunc
+
+func Test_q_args()
+ command -nargs=* TestQArgs call SaveCmdArgs(<q-args>)
+
+ TestQArgs
+ call assert_equal([''], g:args)
+
+ TestQArgs one two three
+ call assert_equal(['one two three'], g:args)
+
+ TestQArgs one\\two three
+ call assert_equal(['one\\two three'], g:args)
+
+ TestQArgs one\ two three
+ call assert_equal(['one\ two three'], g:args)
+
+ TestQArgs one\"two three
+ call assert_equal(['one\"two three'], g:args)
+
+ delcommand TestQArgs
+endfunc
+
+func Test_reg_arg()
+ command -nargs=* -reg TestRegArg call SaveCmdArgs("<reg>", "<register>")
+
+ TestRegArg
+ call assert_equal(['', ''], g:args)
+
+ TestRegArg x
+ call assert_equal(['x', 'x'], g:args)
+
+ delcommand TestRegArg
+endfunc
+
+func Test_no_arg()
+ command -nargs=* TestNoArg call SaveCmdArgs("<args>", "<>", "<x>", "<lt>")
+
+ TestNoArg
+ call assert_equal(['', '<>', '<x>', '<'], g:args)
+
+ TestNoArg one
+ call assert_equal(['one', '<>', '<x>', '<'], g:args)
+
+ delcommand TestNoArg
+endfunc
+
+func Test_range_arg()
+ command -range TestRangeArg call SaveCmdArgs(<range>, <line1>, <line2>)
+ new
+ call setline(1, range(100))
+ let lnum = line('.')
+
+ TestRangeArg
+ call assert_equal([0, lnum, lnum], g:args)
+
+ 99TestRangeArg
+ call assert_equal([1, 99, 99], g:args)
+
+ 88,99TestRangeArg
+ call assert_equal([2, 88, 99], g:args)
+
+ call assert_fails('102TestRangeArg', 'E16:')
+
+ bwipe!
+ delcommand TestRangeArg
+endfunc
+
func Test_Ambiguous()
command Doit let g:didit = 'yes'
command Dothat let g:didthat = 'also'
@@ -88,6 +179,8 @@ func Test_Ambiguous()
Do
call assert_equal('also', g:didthat)
delcommand Dothat
+
+ call assert_fails("\x4ei\041", ' you demand a ')
endfunc
func Test_redefine_on_reload()
@@ -139,6 +232,7 @@ func Test_CmdErrors()
call assert_fails('com! - DoCmd :', 'E175:')
call assert_fails('com! -xxx DoCmd :', 'E181:')
call assert_fails('com! -addr DoCmd :', 'E179:')
+ call assert_fails('com! -addr=asdf DoCmd :', 'E180:')
call assert_fails('com! -complete DoCmd :', 'E179:')
call assert_fails('com! -complete=xxx DoCmd :', 'E180:')
call assert_fails('com! -complete=custom DoCmd :', 'E467:')
diff --git a/src/version.c b/src/version.c
index 86a074b28..dbf577d1b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1211,
+/**/
1210,
/**/
1209,