To: vim_dev@googlegroups.com Subject: Patch 8.2.2994 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2994 Problem: Various code is not fully tested. Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8378) Files: src/testdir/test_excmd.vim, src/testdir/test_mapping.vim, src/testdir/test_modeline.vim, src/testdir/test_options.vim, src/testdir/test_paste.vim, src/vim9compile.c *** ../vim-8.2.2993/src/testdir/test_excmd.vim 2021-06-12 13:46:38.055854976 +0200 --- src/testdir/test_excmd.vim 2021-06-13 21:49:44.585715050 +0200 *************** *** 596,602 **** " some options cannot be changed in a sandbox call assert_fails('set exrc', 'E48:') call assert_fails('set cdpath', 'E48:') ! if has('xim') call assert_fails('set imstyle', 'E48:') endif endfunc --- 596,602 ---- " some options cannot be changed in a sandbox call assert_fails('set exrc', 'E48:') call assert_fails('set cdpath', 'E48:') ! if has('xim') && has('gui_gtk') call assert_fails('set imstyle', 'E48:') endif endfunc *** ../vim-8.2.2993/src/testdir/test_mapping.vim 2021-04-30 19:43:06.618062735 +0200 --- src/testdir/test_mapping.vim 2021-06-13 21:49:44.585715050 +0200 *************** *** 485,490 **** --- 485,495 ---- call assert_equal(['n ,k '], \ execute('nmap ,k')->trim()->split("\n")) + " map with space at the beginning + exe "nmap \ w " + call assert_equal(['n w '], + \ execute("nmap \ w")->trim()->split("\n")) + nmapclear endfunc *************** *** 1411,1414 **** --- 1416,1434 ---- bwipe! endfunc + " Test for abbreviations with 'latin1' encoding + func Test_abbreviate_latin1_encoding() + set encoding=latin1 + call assert_fails('abbr ab#$c ABC', 'E474:') + new + iabbr #i #include + iabbr ## #enddef + exe "normal i#i\" + call assert_equal('#include', getline(1)) + exe "normal 0Di##\" + call assert_equal('#enddef', getline(1)) + %bw! + set encoding=utf-8 + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.2993/src/testdir/test_modeline.vim 2020-08-12 18:50:31.883655785 +0200 --- src/testdir/test_modeline.vim 2021-06-13 21:49:44.585715050 +0200 *************** *** 334,337 **** --- 334,363 ---- call delete('Xmodeline') endfunc + " Test for the 'modeline' default value in compatible and non-compatible modes + " for root and non-root accounts + func Test_modeline_default() + set compatible + call assert_false(&modeline) + set nocompatible + call assert_equal(IsRoot() ? 0 : 1, &modeline) + set compatible&vi + call assert_false(&modeline) + set compatible&vim + call assert_equal(IsRoot() ? 0 : 1, &modeline) + set compatible& modeline& + endfunc + + " Some options cannot be set from the modeline when 'diff' option is set + func Test_modeline_diff_buffer() + call writefile(['vim: diff foldmethod=marker wrap'], 'Xfile') + set foldmethod& nowrap + new Xfile + call assert_equal('manual', &foldmethod) + call assert_false(&wrap) + set wrap& + call delete('Xfile') + bw + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.2993/src/testdir/test_options.vim 2021-06-13 20:27:32.889357660 +0200 --- src/testdir/test_options.vim 2021-06-13 21:49:44.585715050 +0200 *************** *** 1160,1163 **** --- 1160,1180 ---- set cmdheight& endfunc + " To specify a control character as a option value, '^' can be used + func Test_opt_control_char() + set wildchar=^v + call assert_equal("\", nr2char(&wildchar)) + set wildcharm=^r + call assert_equal("\", nr2char(&wildcharm)) + " Bug: This doesn't work for the 'cedit' and 'termwinkey' options + set wildchar& wildcharm& + endfunc + + " Test for the 'errorbells' option + func Test_opt_errorbells() + set errorbells + call assert_beeps('s/a1b2/x1y2/') + set noerrorbells + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.2993/src/testdir/test_paste.vim 2021-03-15 18:36:16.725494781 +0100 --- src/testdir/test_paste.vim 2021-06-13 21:49:44.585715050 +0200 *************** *** 159,166 **** --- 159,226 ---- call feedkeys("i\", 'xt') call assert_false(&paste) call assert_equal('Hello', getline(1)) + " command-line completion for 'pastetoggle' value + call feedkeys(":set pastetoggle=\\\"\", 'xt') + call assert_equal('"set pastetoggle=', @:) set pastetoggle& bwipe! endfunc + " Test for restoring option values when 'paste' is disabled + func Test_paste_opt_restore() + set autoindent expandtab ruler showmatch + if has('rightleft') + set revins hkmap + endif + set smarttab softtabstop=3 textwidth=27 wrapmargin=12 + if has('vartabs') + set varsofttabstop=10,20 + endif + + " enabling 'paste' should reset the above options + set paste + call assert_false(&autoindent) + call assert_false(&expandtab) + if has('rightleft') + call assert_false(&revins) + call assert_false(&hkmap) + endif + call assert_false(&ruler) + call assert_false(&showmatch) + call assert_false(&smarttab) + call assert_equal(0, &softtabstop) + call assert_equal(0, &textwidth) + call assert_equal(0, &wrapmargin) + if has('vartabs') + call assert_equal('', &varsofttabstop) + endif + + " disabling 'paste' should restore the option values + set nopaste + call assert_true(&autoindent) + call assert_true(&expandtab) + if has('rightleft') + call assert_true(&revins) + call assert_true(&hkmap) + endif + call assert_true(&ruler) + call assert_true(&showmatch) + call assert_true(&smarttab) + call assert_equal(3, &softtabstop) + call assert_equal(27, &textwidth) + call assert_equal(12, &wrapmargin) + if has('vartabs') + call assert_equal('10,20', &varsofttabstop) + endif + + set autoindent& expandtab& ruler& showmatch& + if has('rightleft') + set revins& hkmap& + endif + set smarttab& softtabstop& textwidth& wrapmargin& + if has('vartabs') + set varsofttabstop& + endif + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.2993/src/vim9compile.c 2021-06-13 15:38:55.574605083 +0200 --- src/vim9compile.c 2021-06-13 21:49:44.585715050 +0200 *************** *** 454,460 **** if (name[len] == '(' || (p[0] == '-' && p[1] == '>')) { // Do not check for an internal function, since it might also be a ! // valid command, such as ":split" versuse "split()". // Skip "g:" before a function name. is_global = (name[0] == 'g' && name[1] == ':'); return find_func(is_global ? name + 2 : name, is_global, cctx) != NULL; --- 454,460 ---- if (name[len] == '(' || (p[0] == '-' && p[1] == '>')) { // Do not check for an internal function, since it might also be a ! // valid command, such as ":split" versus "split()". // Skip "g:" before a function name. is_global = (name[0] == 'g' && name[1] == ':'); return find_func(is_global ? name + 2 : name, is_global, cctx) != NULL; *** ../vim-8.2.2993/src/version.c 2021-06-13 20:27:32.889357660 +0200 --- src/version.c 2021-06-13 21:51:36.173421760 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2994, /**/ -- BEDEVERE: And what do you burn, apart from witches? FOURTH VILLAGER: ... Wood? BEDEVERE: So why do witches burn? SECOND VILLAGER: (pianissimo) ... Because they're made of wood...? "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///