Patch 8.2.0610
Problem:    Some tests are still old style.
Solution:   Convert to new style tests. (Yegappan Lakshmanan, closes #5957)
Files:      src/testdir/test_blob.vim, src/testdir/test_cursor_func.vim,
            src/testdir/test_eval.in, src/testdir/test_eval.ok,
            src/testdir/test_eval_func.vim, src/testdir/test_eval_stuff.vim,
            src/testdir/test_expr.vim, src/testdir/test_filter_map.vim,
            src/testdir/test_functions.vim, src/testdir/test_listdict.vim,
            src/testdir/test_sort.vim, src/testdir/test_syntax.vim,
            src/testdir/test_utf8.vim, src/testdir/test_vimscript.vim


*** ../vim-8.2.0609/src/testdir/test_blob.vim   2020-04-06 21:12:38.809322010 
+0200
--- src/testdir/test_blob.vim   2020-04-20 16:30:37.216278824 +0200
***************
*** 307,312 ****
--- 307,315 ----
    call assert_fails('call insert(b, -1)', 'E475:')
    call assert_fails('call insert(b, 257)', 'E475:')
    call assert_fails('call insert(b, 0, [9])', 'E745:')
+   call assert_fails('call insert(b, 0, -20)', 'E475:')
+   call assert_fails('call insert(b, 0, 20)', 'E475:')
+   call assert_fails('call insert(b, [])', 'E745:')
  endfunc
  
  func Test_blob_reverse()
*** ../vim-8.2.0609/src/testdir/test_cursor_func.vim    2019-10-27 
21:25:06.000000000 +0100
--- src/testdir/test_cursor_func.vim    2020-04-20 16:30:37.216278824 +0200
***************
*** 115,117 ****
--- 115,119 ----
    close
    bwipe!
  endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0609/src/testdir/test_eval.in    2020-04-18 21:56:35.394407188 
+0200
--- src/testdir/test_eval.in    2020-04-20 16:30:37.216278824 +0200
***************
*** 27,40 ****
          execute "silent normal! Go==\n==\e\"".a:1."P"
      endif
  endfun
- :fun ErrExe(str)
-     call append('$', 'Executing '.a:str)
-     try
-         execute a:str
-     catch
-         $put =v:exception
-     endtry
- endfun
  :fun Test()
  $put ='{{{1 Appending NL with setreg()'
  call setreg('a', 'abcA2', 'c')
--- 27,32 ----
***************
*** 109,211 ****
    call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard 
contents']", "clipboard contents\n", "['clipboard contents']")
    call AppendRegParts('*', 'V', "something else\n", "['something else']", 
"something else\n", "['something else']")
  endif
- $put ='{{{1 Errors'
- call ErrExe('call setreg()')
- call ErrExe('call setreg(1)')
- call ErrExe('call setreg(1, 2, 3, 4)')
- call ErrExe('call setreg([], 2)')
- call ErrExe('call setreg(1, {})')
- call ErrExe('call setreg(1, 2, [])')
- call ErrExe('call setreg("/", ["1", "2"])')
- call ErrExe('call setreg("=", ["1", "2"])')
- call ErrExe('call setreg(1, ["", "", [], ""])')
  endfun
  :"
  :call Test()
  :"
  :delfunction SetReg
  :delfunction AppendRegContents
- :delfunction ErrExe
  :delfunction Test
  :delcommand AR
  :call garbagecollect(1)
  :"
- :" function name not starting with capital
- :try
- :func! g:test()
- :echo "test"
- :endfunc
- :catch
- :$put =v:exception
- :endtry
- :"
- :" function name includes a colon
- :try
- :func! b:test()
- :echo "test"
- :endfunc
- :catch
- :$put =v:exception
- :endtry
- :"
- :" function name folowed by #
- :try
- :func! test2() "#
- :echo "test2"
- :endfunc
- :catch
- :$put =v:exception
- :endtry
- :"
- :" function name starting with/without "g:", buffer-local funcref.
- :function! g:Foo(n)
- :  $put ='called Foo(' . a:n . ')'
- :endfunction
- :let b:my_func = function('Foo')
- :call b:my_func(1)
- :echo g:Foo(2)
- :echo Foo(3)
- :"
- :" script-local function used in Funcref must exist.
- :so test_eval_func.vim
- :"
- :" Using $ instead of '$' must give an error
- :try
- : call append($, 'foobar')
- :catch
- :$put =v:exception
- :endtry
- :"
- :$put ='{{{1 getcurpos/setpos'
- /^012345678
- 6l:let sp = getcurpos()
- 0:call setpos('.', sp)
- jyl:$put
- :"
- :" substring and variable name
- :let str = 'abcdef'
- :let n = 3
- :$put =str[n:]
- :$put =str[:n]
- :$put =str[n:n]
- :unlet n
- :let nn = 3
- :$put =str[nn:]
- :$put =str[:nn]
- :$put =str[nn:nn]
- :unlet nn
- :let b:nn = 4
- :$put =str[b:nn:]
- :$put =str[:b:nn]
- :$put =str[b:nn:b:nn]
- :unlet b:nn
- :"
  :/^start:/+1,$wq! test.out
  :" vim: et ts=4 isk-=\: fmr=???,???
  :call getchar()
  ENDTEST
  
- 012345678
- 012345678
- 
  start:
--- 101,119 ----
*** ../vim-8.2.0609/src/testdir/test_eval.ok    2020-04-18 21:56:35.394407188 
+0200
--- src/testdir/test_eval.ok    2020-04-20 16:32:30.440013298 +0200
***************
*** 208,251 ****
  {{{1 System clipboard
  *: type V; value: clipboard contents)
    call assert_true(has_key(d, ''))
    call assert_true(has_key(d, 'a'))
+   call assert_fails("let i = has_key([], 'a')", 'E715:')
  
    let d[''] = 'none'
    let d['a'] = 'aaa'
*** ../vim-8.2.0609/src/testdir/test_filter_map.vim     2020-01-29 
22:17:13.029497794 +0100
--- src/testdir/test_filter_map.vim     2020-04-20 16:30:37.220278815 +0200
***************
*** 89,97 ****
    call assert_equal({"foo": "f", "bar": "b", "baz": "b"}, map(copy(dict), 
function('s:filter4')))
  endfunc
  
! func Test_map_fails()
    call assert_fails('call map([1], "42 +")', 'E15:')
    call assert_fails('call filter([1], "42 +")', 'E15:')
  endfunc
  
  func Test_map_and_modify()
--- 89,103 ----
    call assert_equal({"foo": "f", "bar": "b", "baz": "b"}, map(copy(dict), 
function('s:filter4')))
  endfunc
  
! func Test_map_filter_fails()
    call assert_fails('call map([1], "42 +")', 'E15:')
    call assert_fails('call filter([1], "42 +")', 'E15:')
+   call assert_fails("let l = map('abc', '\"> \" . v:val')", 'E712:')
+   call assert_fails("let l = filter('abc', '\"> \" . v:val')", 'E712:')
+   call assert_fails("let l = filter([1, 2, 3], '{}')", 'E728:')
+   call assert_fails("let l = filter({'k' : 10}, '{}')", 'E728:')
+   call assert_equal(0, map(test_null_list(), '"> " .. v:val'))
+   call assert_equal(0, map(test_null_dict(), '"> " .. v:val'))
  endfunc
  
  func Test_map_and_modify()
***************
*** 103,105 ****
--- 109,113 ----
    call assert_fails('call map(d, "remove(d, v:key)[0]")', 'E741:')
    call assert_fails('echo map(d, {k,v -> remove(d, k)})', 'E741:')
  endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0609/src/testdir/test_functions.vim      2020-04-08 
21:50:18.872619665 +0200
--- src/testdir/test_functions.vim      2020-04-20 16:30:37.220278815 +0200
***************
*** 99,107 ****
--- 99,109 ----
    call assert_equal(2, len('ab'))
  
    call assert_equal(0, len([]))
+   call assert_equal(0, len(test_null_list()))
    call assert_equal(2, len([2, 1]))
  
    call assert_equal(0, len({}))
+   call assert_equal(0, len(test_null_dict()))
    call assert_equal(2, len({'a': 1, 'b': 2}))
  
    call assert_fails('call len(v:none)', 'E701:')
***************
*** 799,804 ****
--- 801,809 ----
    split
    only
    undo
+ 
+   " Using $ instead of '$' must give an error
+   call assert_fails("call append($, 'foobar')", 'E116:')
  endfunc
  
  func Test_getbufvar()
***************
*** 2043,2048 ****
--- 2048,2054 ----
  
    " list2str()
    call assert_equal('ABC', list2str(range(65, 67)))
+   call assert_fails('let s = list2str(5)', 'E474:')
  
    " lock()
    let thelist = range(5)
***************
*** 2216,2219 ****
--- 2222,2238 ----
    call assert_equal([], screenchars(-1, -1))
  endfunc
  
+ " Test for getcurpos() and setpos()
+ func Test_getcurpos_setpos()
+   new
+   call setline(1, ['012345678', '012345678'])
+   normal gg6l
+   let sp = getcurpos()
+   normal 0
+   call setpos('.', sp)
+   normal jyl
+   call assert_equal('6', @")
+   close!
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0609/src/testdir/test_listdict.vim       2020-04-06 
21:35:02.464237765 +0200
--- src/testdir/test_listdict.vim       2020-04-20 16:30:37.220278815 +0200
***************
*** 32,37 ****
--- 32,38 ----
    call assert_equal([1, 'as''d', [1, 2, function('strlen')], {'a': 1}], 
l[0:8])
    call assert_equal([], l[8:-1])
    call assert_equal([], l[0:-10])
+   call assert_equal([], test_null_list()[:2])
  endfunc
  
  " List identity
***************
*** 168,173 ****
--- 169,187 ----
    call assert_equal({'c': 'ccc', '1': 99, 'b': [1, 2, function('strlen')], 
'3': 33, '-1': {'a': 1}}, d)
    call filter(d, 'v:key =~ ''[ac391]''')
    call assert_equal({'c': 'ccc', '1': 99, '3': 33, '-1': {'a': 1}}, d)
+ 
+   " duplicate key
+   call assert_fails("let d = {'k' : 10, 'k' : 20}", 'E721:')
+   " missing comma
+   call assert_fails("let d = {'k' : 10 'k' : 20}", 'E722:')
+   " missing curly brace
+   call assert_fails("let d = {'k' : 10,", 'E723:')
+   " invalid key
+   call assert_fails('let d = #{++ : 10}', 'E15:')
+   " wrong type for key
+   call assert_fails('let d={[] : 10}', 'E730:')
+   " undefined variable as value
+   call assert_fails("let d={'k' : i}", 'E121:')
  endfunc
  
  " Dictionary identity
***************
*** 262,268 ****
    unlet g:dict
  endfunc
  
! " Test removing items in la dictionary
  func Test_dict_func_remove()
    let d = {1:'a', 2:'b', 3:'c'}
    call assert_equal('b', remove(d, 2))
--- 276,282 ----
    unlet g:dict
  endfunc
  
! " Test removing items in a dictionary
  func Test_dict_func_remove()
    let d = {1:'a', 2:'b', 3:'c'}
    call assert_equal('b', remove(d, 2))
***************
*** 634,639 ****
--- 648,658 ----
  
    call assert_fails('call reverse("")', 'E899:')
    call assert_fails('call uniq([1, 2], {x, y -> []})', 'E882:')
+   call assert_fails("call sort([1, 2], function('min'), 1)", "E715:")
+   call assert_fails("call sort([1, 2], function('invalid_func'))", "E700:")
+   call assert_fails("call sort([1, 2], function('min'))", "E702:")
+   call assert_equal(0, sort(test_null_list()))
+   call assert_equal(0, uniq(test_null_list()))
  endfunc
  
  " splitting a string to a List using split()
***************
*** 748,753 ****
--- 767,775 ----
  
    call assert_fails("call extend([1, 2], 1)", 'E712:')
    call assert_fails("call extend([1, 2], {})", 'E712:')
+ 
+   " Extend g: dictionary with an invalid variable name
+   call assert_fails("call extend(g:, {'-!' : 10})", 'E461:')
  endfunc
  
  func s:check_scope_dict(x, fixed)
***************
*** 871,876 ****
--- 893,918 ----
    call assert_fails("let v = range(5)[2:[]]", 'E730:')
    call assert_fails("let v = range(5)[2:{-> 2}(]", 'E116:')
    call assert_fails("let v = range(5)[2:3", 'E111:')
+   call assert_fails("let l = insert([1,2,3], 4, 10)", 'E684:')
+   call assert_fails("let l = insert([1,2,3], 4, -10)", 'E684:')
+   call assert_fails("let l = insert([1,2,3], 4, [])", 'E745:')
+ endfunc
+ 
+ " Test for a null list
+ func Test_null_list()
+   call assert_equal(0, join(test_null_list()))
+   call assert_fails('let s = join([1, 2], [])', 'E730:')
+   call assert_equal([], split(test_null_string()))
+ endfunc
+ 
+ " Test for a null dict
+ func Test_null_dict()
+   call assert_equal(0, items(test_null_dict()))
+   call assert_equal(0, keys(test_null_dict()))
+   call assert_equal(0, values(test_null_dict()))
+   call assert_false(has_key(test_null_dict(), 'k'))
+   call assert_fails("let l = [] + test_null_list()", 'E15:')
+   call assert_fails("let l = test_null_list() + []", 'E15:')
  endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0609/src/testdir/test_sort.vim   2020-02-17 22:11:39.666644199 
+0100
--- src/testdir/test_sort.vim   2020-04-20 16:30:37.220278815 +0200
***************
*** 47,53 ****
    call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], ''))
    call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], 0))
    call assert_equal(['2', 'A', 'a', 'AA', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], 1))
!   call assert_fails('call sort([3.3, 1, "2"], 3)', "E474")
  endfunc
  
  " Tests for the ":sort" command.
--- 47,53 ----
    call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], ''))
    call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], 0))
    call assert_equal(['2', 'A', 'a', 'AA', 1, 3.3], sort([3.3, 1, "2", "A", 
"a", "AA"], 1))
!   call assert_fails('call sort([3.3, 1, "2"], 3)', "E474:")
  endfunc
  
  " Tests for the ":sort" command.
*** ../vim-8.2.0609/src/testdir/test_syntax.vim 2020-04-19 18:31:21.715570505 
+0200
--- src/testdir/test_syntax.vim 2020-04-20 16:30:37.220278815 +0200
***************
*** 151,156 ****
--- 151,160 ----
    let a = execute('syntax list')
    call assert_equal("\nNo Syntax items defined for this buffer", a)
  
+   syntax keyword Type int containedin=g1 skipwhite skipempty skipnl 
nextgroup=Abc
+   let exp = "Type           xxx containedin=g1  nextgroup=Abc  skipnl 
skipwhite skipempty int"
+   call assert_equal(exp, split(execute("syntax list"), "\n")[1])
+ 
    bd
  endfunc
  
*** ../vim-8.2.0609/src/testdir/test_utf8.vim   2020-03-25 22:23:41.898363595 
+0100
--- src/testdir/test_utf8.vim   2020-04-20 16:30:37.220278815 +0200
***************
*** 103,108 ****
--- 103,111 ----
    let sres = list2str(l, 1)
    call assert_equal([65, 66, 67], str2list("ABC"))
  
+   " Try converting a list to a string in latin-1 encoding
+   call assert_equal([1, 2, 3], str2list(list2str([1, 2, 3])))
+ 
    let &encoding = save_encoding
    call assert_equal(l, lres)
    call assert_equal(s, sres)
*** ../vim-8.2.0609/src/testdir/test_vimscript.vim      2020-04-19 
17:24:48.665264342 +0200
--- src/testdir/test_vimscript.vim      2020-04-20 16:30:37.220278815 +0200
***************
*** 1980,1985 ****
--- 1980,2065 ----
    endif
  endfunc
  
+ func Test_invalid_function_names()
+   " function name not starting with capital
+   let caught_e128 = 0
+   try
+     func! g:test()
+       echo "test"
+     endfunc
+   catch /E128:/
+     let caught_e128 = 1
+   endtry
+   call assert_equal(1, caught_e128)
+ 
+   " function name includes a colon
+   let caught_e884 = 0
+   try
+     func! b:test()
+       echo "test"
+     endfunc
+   catch /E884:/
+     let caught_e884 = 1
+   endtry
+   call assert_equal(1, caught_e884)
+ 
+   " function name folowed by #
+   let caught_e128 = 0
+   try
+     func! test2() "#
+       echo "test2"
+     endfunc
+   catch /E128:/
+     let caught_e128 = 1
+   endtry
+   call assert_equal(1, caught_e128)
+ 
+   " function name starting with/without "g:", buffer-local funcref.
+   function! g:Foo(n)
+     return 'called Foo(' . a:n . ')'
+   endfunction
+   let b:my_func = function('Foo')
+   call assert_equal('called Foo(1)', b:my_func(1))
+   call assert_equal('called Foo(2)', g:Foo(2))
+   call assert_equal('called Foo(3)', Foo(3))
+   delfunc g:Foo
+ 
+   " script-local function used in Funcref must exist.
+   let lines =<< trim END
+     func s:Testje()
+       return "foo"
+     endfunc
+     let Bar = function('s:Testje')
+     call assert_equal(0, exists('s:Testje'))
+     call assert_equal(1, exists('*s:Testje'))
+     call assert_equal(1, exists('Bar'))
+     call assert_equal(1, exists('*Bar'))
+   END
+   call writefile(lines, 'Xscript')
+   source Xscript
+   call delete('Xscript')
+ endfunc
+ 
+ " substring and variable name
+ func Test_substring_var()
+   let str = 'abcdef'
+   let n = 3
+   call assert_equal('def', str[n:])
+   call assert_equal('abcd', str[:n])
+   call assert_equal('d', str[n:n])
+   unlet n
+   let nn = 3
+   call assert_equal('def', str[nn:])
+   call assert_equal('abcd', str[:nn])
+   call assert_equal('d', str[nn:nn])
+   unlet nn
+   let b:nn = 4
+   call assert_equal('ef', str[b:nn:])
+   call assert_equal('abcde', str[:b:nn])
+   call assert_equal('e', str[b:nn:b:nn])
+   unlet b:nn
+ endfunc
+ 
  
"-------------------------------------------------------------------------------
  " Modelines                                                               {{{1
  " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
*** ../vim-8.2.0609/src/version.c       2020-04-20 16:21:50.269555351 +0200
--- src/version.c       2020-04-20 16:31:48.044112484 +0200
***************
*** 748,749 ****
--- 748,751 ----
  {   /* Add new patch number below this line */
+ /**/
+     610,
  /**/

-- 
Engineers are widely recognized as superior marriage material: intelligent,
dependable, employed, honest, and handy around the house.
                                (Scott Adams - The Dilbert principle)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202004201450.03KEoT8Z020251%40masaka.moolenaar.net.

Raspunde prin e-mail lui