Patch 8.2.0551
Problem:    Not all code for options is tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5913)
Files:      src/testdir/test_options.vim, src/testdir/test_python3.vim,
            src/testdir/test_undo.vim, src/testdir/test_vimscript.vim


*** ../vim-8.2.0550/src/testdir/test_options.vim        2020-04-11 
17:09:28.324426586 +0200
--- src/testdir/test_options.vim        2020-04-12 13:47:09.264623171 +0200
***************
*** 269,276 ****
  
    call feedkeys(":set tags=./\\\\ dif\<C-A>\<C-B>\"\<CR>", 'tx')
    call assert_equal('"set tags=./\\ diff diffexpr diffopt', @:)
- 
    set tags&
  endfunc
  
  func Test_set_errors()
--- 269,321 ----
  
    call feedkeys(":set tags=./\\\\ dif\<C-A>\<C-B>\"\<CR>", 'tx')
    call assert_equal('"set tags=./\\ diff diffexpr diffopt', @:)
    set tags&
+ 
+   " Expanding the option names
+   call feedkeys(":set \<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"set all', @:)
+ 
+   " Expanding a second set of option names
+   call feedkeys(":set wrapscan \<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"set wrapscan all', @:)
+ 
+   " Expanding a special keycode
+   call feedkeys(":set <Home>\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"set <Home>', @:)
+ 
+   " Expanding an invalid special keycode
+   call feedkeys(":set <abcd>\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set <abcd>\<Tab>", @:)
+ 
+   " Expanding a terminal keycode
+   call feedkeys(":set t_AB\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set t_AB", @:)
+ 
+   " Expanding an invalid option name
+   call feedkeys(":set abcde=\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set abcde=\<Tab>", @:)
+ 
+   " Expanding after a = for a boolean option
+   call feedkeys(":set wrapscan=\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set wrapscan=\<Tab>", @:)
+ 
+   " Expanding a numeric option
+   call feedkeys(":set tabstop+=\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set tabstop+=" .. &tabstop, @:)
+ 
+   " Expanding a non-boolean option
+   call feedkeys(":set invtabstop=\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set invtabstop=", @:)
+ 
+   " Expand options for 'spellsuggest'
+   call feedkeys(":set spellsuggest=best,file:xyz\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal("\"set spellsuggest=best,file:xyz", @:)
+ 
+   " Expand value for 'key'
+   set key=abcd
+   call feedkeys(":set key=\<Tab>\<C-B>\"\<CR>", 'xt')
+   call assert_equal('"set key=*****', @:)
+   set key=
  endfunc
  
  func Test_set_errors()
***************
*** 327,333 ****
--- 372,385 ----
    endif
    call assert_fails('set backupext=~ patchmode=~', 'E589:')
    call assert_fails('set winminheight=10 winheight=9', 'E591:')
+   set winminheight& winheight&
+   set winheight=10 winminheight=10
+   call assert_fails('set winheight=9', 'E591:')
+   set winminheight& winheight&
    call assert_fails('set winminwidth=10 winwidth=9', 'E592:')
+   set winminwidth& winwidth&
+   call assert_fails('set winwidth=9 winminwidth=10', 'E592:')
+   set winwidth& winminwidth&
    call assert_fails("set showbreak=\x01", 'E595:')
    call assert_fails('set t_foo=', 'E846:')
    call assert_fails('set tabstop??', 'E488:')
***************
*** 338,346 ****
--- 390,400 ----
    call assert_fails('set autoindent@', 'E488:')
    call assert_fails('set wildchar=<abc>', 'E474:')
    call assert_fails('set cmdheight=1a', 'E521:')
+   call assert_fails('set invcmdheight', 'E474:')
    if has('python') && has('python3')
      call assert_fails('set pyxversion=6', 'E474:')
    endif
+   call assert_fails("let &tabstop='ab'", 'E521:')
  endfunc
  
  func CheckWasSet(name)
***************
*** 798,804 ****
--- 852,860 ----
  func Test_opt_sandbox()
    for opt in ['backupdir', 'cdpath', 'exrc']
      call assert_fails('sandbox set ' .. opt .. '?', 'E48:')
+     call assert_fails('sandbox let &' .. opt .. ' = 1', 'E48:')
    endfor
+   call assert_fails('sandbox let &modelineexpr = 1', 'E48:')
  endfunc
  
  " Test for setting an option with local value to global value
*** ../vim-8.2.0550/src/testdir/test_python3.vim        2020-02-23 
15:10:13.569404928 +0100
--- src/testdir/test_python3.vim        2020-04-12 13:47:09.264623171 +0200
***************
*** 259,261 ****
--- 259,334 ----
  
    bwipe!
  endfunc
+ 
+ " Test for resetting options with local values to global values
+ func Test_python3_opt_reset_local_to_global()
+   new
+ 
+   py3 curbuf = vim.current.buffer
+   py3 curwin = vim.current.window
+ 
+   " List of buffer-local options. Each list item has [option name, global
+   " value, buffer-local value, buffer-local value after reset] to use in the
+   " test.
+   let bopts = [
+         \ ['autoread', 1, 0, -1],
+         \ ['equalprg', 'geprg', 'leprg', ''],
+         \ ['keywordprg', 'gkprg', 'lkprg', ''],
+         \ ['path', 'gpath', 'lpath', ''],
+         \ ['backupcopy', 'yes', 'no', ''],
+         \ ['tags', 'gtags', 'ltags', ''],
+         \ ['tagcase', 'ignore', 'match', ''],
+         \ ['define', 'gdef', 'ldef', ''],
+         \ ['include', 'ginc', 'linc', ''],
+         \ ['dict', 'gdict', 'ldict', ''],
+         \ ['thesaurus', 'gtsr', 'ltsr', ''],
+         \ ['formatprg', 'gfprg', 'lfprg', ''],
+         \ ['errorformat', '%f:%l:%m', '%s-%l-%m', ''],
+         \ ['grepprg', 'ggprg', 'lgprg', ''],
+         \ ['makeprg', 'gmprg', 'lmprg', ''],
+         \ ['balloonexpr', 'gbexpr', 'lbexpr', ''],
+         \ ['cryptmethod', 'blowfish2', 'zip', ''],
+         \ ['lispwords', 'abc', 'xyz', ''],
+         \ ['makeencoding', 'utf-8', 'latin1', ''],
+         \ ['undolevels', 100, 200, -123456]]
+ 
+   " Set the global and buffer-local option values and then clear the
+   " buffer-local option value.
+   for opt in bopts
+     py3 pyopt = vim.bindeval("opt")
+     py3 vim.options[pyopt[0]] = pyopt[1]
+     py3 curbuf.options[pyopt[0]] = pyopt[2]
+     exe "call assert_equal(opt[2], &" .. opt[0] .. ")"
+     exe "call assert_equal(opt[1], &g:" .. opt[0] .. ")"
+     exe "call assert_equal(opt[2], &l:" .. opt[0] .. ")"
+     py3 del curbuf.options[pyopt[0]]
+     exe "call assert_equal(opt[1], &" .. opt[0] .. ")"
+     exe "call assert_equal(opt[1], &g:" .. opt[0] .. ")"
+     exe "call assert_equal(opt[3], &l:" .. opt[0] .. ")"
+     exe "set " .. opt[0] .. "&"
+   endfor
+ 
+   " Set the global and window-local option values and then clear the
+   " window-local option value.
+   let wopts = [
+         \ ['scrolloff', 5, 10, -1],
+         \ ['sidescrolloff', 6, 12, -1],
+         \ ['statusline', '%<%f', '%<%F', '']]
+   for opt in wopts
+     py3 pyopt = vim.bindeval("opt")
+     py3 vim.options[pyopt[0]] = pyopt[1]
+     py3 curwin.options[pyopt[0]] = pyopt[2]
+     exe "call assert_equal(opt[2], &" .. opt[0] .. ")"
+     exe "call assert_equal(opt[1], &g:" .. opt[0] .. ")"
+     exe "call assert_equal(opt[2], &l:" .. opt[0] .. ")"
+     py3 del curwin.options[pyopt[0]]
+     exe "call assert_equal(opt[1], &" .. opt[0] .. ")"
+     exe "call assert_equal(opt[1], &g:" .. opt[0] .. ")"
+     exe "call assert_equal(opt[3], &l:" .. opt[0] .. ")"
+     exe "set " .. opt[0] .. "&"
+   endfor
+ 
+   close!
+ endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0550/src/testdir/test_undo.vim   2020-02-11 22:03:43.042846213 
+0100
--- src/testdir/test_undo.vim   2020-04-12 13:47:09.264623171 +0200
***************
*** 123,128 ****
--- 123,133 ----
    call assert_equal(50, &g:undolevels)
    call assert_equal(-123456, &l:undolevels)
  
+   " Resetting the local 'undolevels' value to use the global value
+   setlocal undolevels=5
+   setlocal undolevels<
+   call assert_equal(-123456, &l:undolevels)
+ 
    " Drop created windows
    set ul&
    new
*** ../vim-8.2.0550/src/testdir/test_vimscript.vim      2020-04-08 
21:50:18.880619637 +0200
--- src/testdir/test_vimscript.vim      2020-04-12 13:47:09.264623171 +0200
***************
*** 1411,1416 ****
--- 1411,1420 ----
      call assert_equal(["{'a': [1, 2, 3], 'b': [...]}",
                     \ "{'a': [1, 2, 3], 'b': [1, 2, 3]}"], l)
  
+     call assert_fails('echo &:', 'E112:')
+     call assert_fails('echo &g:', 'E112:')
+     call assert_fails('echo &l:', 'E112:')
+ 
  endfunc
  
  
"-------------------------------------------------------------------------------
*** ../vim-8.2.0550/src/version.c       2020-04-12 13:38:49.405711500 +0200
--- src/version.c       2020-04-12 13:50:04.944213995 +0200
***************
*** 740,741 ****
--- 740,743 ----
  {   /* Add new patch number below this line */
+ /**/
+     551,
  /**/

-- 
God made machine language; all the rest is the work of man.

 /// 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/202004121151.03CBpGK5032334%40masaka.moolenaar.net.

Raspunde prin e-mail lui