Mercurial > vim
changeset 31849:dbec60b8c253 v9.0.1257
patch 9.0.1257: code style is not check in test scripts
Commit: https://github.com/vim/vim/commit/94722c510745a0cfd494c51625a514b92dd2bfb2
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 28 19:19:03 2023 +0000
patch 9.0.1257: code style is not check in test scripts
Problem: Code style is not check in test scripts.
Solution: Add basic code style check for test files.
line wrap: on
line diff
--- a/src/testdir/keycode_check.vim +++ b/src/testdir/keycode_check.vim @@ -4,8 +4,8 @@ vim9script # # Usage: vim -u NONE -S keycode_check.vim # -# Author: Bram Moolenaar -# Last Update: 2022 Nov 15 +# Author: Bram Moolenaar +# Last Update: 2022 Nov 15 # # The codes are stored in the file "keycode_check.json", so that you can # compare the results of various terminals. @@ -449,7 +449,7 @@ enddef # The main loop while true var action = inputlist(['Select operation:', - '1. List results', + '1. List results', '2. Add results for a new terminal', '3. Replace results', '4. Clear results',
--- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -59,7 +59,7 @@ if has('gui_running') endif " Check that the screen size is at least 24 x 80 characters. -if &lines < 24 || &columns < 80 +if &lines < 24 || &columns < 80 let error = 'Screen size too small! Tests require at least 24 lines with 80 characters, got ' .. &lines .. ' lines with ' .. &columns .. ' characters' echoerr error split test.log
--- a/src/testdir/setup.vim +++ b/src/testdir/setup.vim @@ -20,7 +20,7 @@ if has('packages') let &packpath = &rtp endif -" Only when the +eval feature is present. +" Only when the +eval feature is present. if 1 " Make sure the .Xauthority file can be found after changing $HOME. if $XAUTHORITY == ''
--- a/src/testdir/summarize.vim +++ b/src/testdir/summarize.vim @@ -33,7 +33,7 @@ if 1 silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn - call extend(output, ["Skipped:"]) + call extend(output, ["Skipped:"]) call extend(output, skipped_output) call extend(output, [
--- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -190,9 +190,9 @@ func Test_wrong_error_type() endfunc func Test_compare_fail() - let s:v = {} - let s:x = {"a": s:v} - let s:v["b"] = s:x + let s:v = {} + let s:x = {"a": s:v} + let s:v["b"] = s:x let s:w = {"c": s:x, "d": ''} try call assert_equal(s:w, '')
--- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -269,8 +269,8 @@ func Test_win_tab_autocmd() augroup testing au WinNew * call add(g:record, 'WinNew') au WinClosed * call add(g:record, 'WinClosed') - au WinEnter * call add(g:record, 'WinEnter') - au WinLeave * call add(g:record, 'WinLeave') + au WinEnter * call add(g:record, 'WinEnter') + au WinLeave * call add(g:record, 'WinLeave') au TabNew * call add(g:record, 'TabNew') au TabClosed * call add(g:record, 'TabClosed') au TabEnter * call add(g:record, 'TabEnter') @@ -3406,7 +3406,7 @@ endfunc func Test_Visual_doautoall_redraw() call setline(1, ['a', 'b']) - new + new wincmd p call feedkeys("G\<C-V>", 'txn') autocmd User Explode ++once redraw @@ -4121,7 +4121,7 @@ endfunc func Test_autocmd_split_dummy() " Autocommand trying to split a window containing a dummy buffer. - auto BufReadPre * exe "sbuf " .. expand("<abuf>") + auto BufReadPre * exe "sbuf " .. expand("<abuf>") " Avoid the "W11" prompt au FileChangedShell * let v:fcs_choice = 'reload' func Xautocmd_changelist()
--- a/src/testdir/test_blob.vim +++ b/src/testdir/test_blob.vim @@ -498,7 +498,7 @@ func Test_blob_read_write() call assert_equal(b[-3 :], br5) VAR br6 = readblob('Xblob', -3, 2) call assert_equal(b[-3 : -2], br6) - + #" reading past end of file, empty result VAR br1e = readblob('Xblob', 10000) call assert_equal(0z, br1e)
--- a/src/testdir/test_blockedit.vim +++ b/src/testdir/test_blockedit.vim @@ -52,7 +52,7 @@ func Test_blockinsert_autoindent() let expected =<< trim END vim9script var d = { - a: (): asdf => 0, + a: (): asdf => 0, b: (): asdf => 0, c: (): asdf => 0, }
--- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -20,7 +20,7 @@ endif " call ch_logfile('channellog', 'w') func SetUp() - if g:testfunc =~ '_ipv6()$' + if g:testfunc =~ '_ipv6()$' let s:localhost = '[::1]:' let s:testscript = 'test_channel_6.py' elseif g:testfunc =~ '_unix()$' @@ -1220,7 +1220,7 @@ endfunc func Test_pipe_to_buffer_raw() let options = {'out_mode': 'raw', 'out_io': 'buffer', 'out_name': 'testout'} split testout - let job = job_start([s:python, '-c', + let job = job_start([s:python, '-c', \ 'import sys; [sys.stdout.write(".") and sys.stdout.flush() for _ in range(10000)]'], options) " the job may be done quickly, also accept "dead" call assert_match('^\%(dead\|run\)$', job_status(job))
--- a/src/testdir/test_cmd_lists.vim +++ b/src/testdir/test_cmd_lists.vim @@ -50,7 +50,7 @@ func Test_cmd_lists() \ 'interface', \ 'public', \ 'static', - \ 'this', + \ 'this', \ 'type', \ '++', \ '--',
--- a/src/testdir/test_codestyle.vim +++ b/src/testdir/test_codestyle.vim @@ -41,5 +41,42 @@ def Test_source_files() bwipe! enddef +def Test_test_files() + for fname in glob('*.vim', 0, 1) + exe 'edit ' .. fname + + # some files intentionally have misplaced white space + if fname =~ 'test_cindent.vim' || fname =~ 'test_join.vim' + continue + endif + + # skip files that are known to have a space before a tab + if fname !~ 'test_comments.vim' + && fname !~ 'test_listchars.vim' + && fname !~ 'test_visual.vim' + cursor(1, 1) + var lnum = search(fname =~ "test_regexp_latin" ? '[^á] \t' : ' \t') + assert_equal(0, lnum, 'testdir/' .. fname .. ': space before tab') + endif + + # skip files that are known to have trailing white space + if fname !~ 'test_cmdline.vim' + && fname !~ 'test_let.vim' + && fname !~ 'test_tagjump.vim' + && fname !~ 'test_vim9_cmd.vim' + cursor(1, 1) + var lnum = search( + fname =~ 'test_vim9_assign.vim' ? '[^=]\s$' + : fname =~ 'test_vim9_class.vim' ? '[^)]\s$' + : fname =~ 'test_vim9_script.vim' ? '[^,:3]\s$' + : fname =~ 'test_visual.vim' ? '[^/]\s$' + : '[^\\]\s$') + assert_equal(0, lnum, 'testdir/' .. fname .. ': trailing white space') + endif + endfor + + bwipe! +enddef + " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_diffmode.vim +++ b/src/testdir/test_diffmode.vim @@ -360,7 +360,7 @@ func Test_dp_do_buffer() call assert_equal('10', getline('.')) 21 call assert_equal('two', getline('.')) - diffget one + diffget one call assert_equal('20', getline('.')) 31 @@ -1113,7 +1113,7 @@ func Test_diff_with_syntax() CheckScreendump let lines =<< trim END - void doNothing() { + void doNothing() { int x = 0; char *s = "hello"; return 5; @@ -1121,7 +1121,7 @@ func Test_diff_with_syntax() END call writefile(lines, 'Xprogram1.c', 'D') let lines =<< trim END - void doSomething() { + void doSomething() { int x = 0; char *s = "there"; return 5; @@ -1130,7 +1130,7 @@ func Test_diff_with_syntax() call writefile(lines, 'Xprogram2.c', 'D') let lines =<< trim END - edit Xprogram1.c + edit Xprogram1.c diffsplit Xprogram2.c END call writefile(lines, 'Xtest_diff_syntax', 'D') @@ -1307,12 +1307,12 @@ endfunc func Test_diff_and_scroll() " this was causing an ml_get error set ls=2 - for i in range(winheight(0) * 2) - call setline(i, i < winheight(0) - 10 ? i : i + 10) + for i in range(winheight(0) * 2) + call setline(i, i < winheight(0) - 10 ? i : i + 10) endfor vnew - for i in range(winheight(0)*2 + 10) - call setline(i, i < winheight(0) - 10 ? 0 : i) + for i in range(winheight(0)*2 + 10) + call setline(i, i < winheight(0) - 10 ? 0 : i) endfor diffthis wincmd p
--- a/src/testdir/test_edit.vim +++ b/src/testdir/test_edit.vim @@ -2072,7 +2072,7 @@ func Test_edit_overlong_file_name() file %%%%%%%%%%%%%%%%%%%%%%%%%% file %%%%%% set readonly - set ls=2 + set ls=2 redraw! set noreadonly ls&
--- a/src/testdir/test_expand.vim +++ b/src/testdir/test_expand.vim @@ -45,9 +45,9 @@ endfunc func Test_expand_tilde_filename() split ~ - call assert_equal('~', expand('%')) + call assert_equal('~', expand('%')) call assert_notequal(expand('%:p'), expand('~/')) - call assert_match('\~', expand('%:p')) + call assert_match('\~', expand('%:p')) bwipe! endfunc
--- a/src/testdir/test_expand_dllpath.vim +++ b/src/testdir/test_expand_dllpath.vim @@ -4,12 +4,12 @@ func s:test_expand_dllpath(optname) let $TEST_EXPAND_DLLPATH = '/dllpath/lib' . substitute(a:optname, '\zedll$', '.', '') execute 'let dllpath_save = &' . a:optname try - execute 'set ' . a:optname . '=$TEST_EXPAND_DLLPATH' - execute 'call assert_equal("' . $TEST_EXPAND_DLLPATH . '", &' . a:optname . ')' + execute 'set ' . a:optname . '=$TEST_EXPAND_DLLPATH' + execute 'call assert_equal("' . $TEST_EXPAND_DLLPATH . '", &' . a:optname . ')' execute 'set ' . a:optname . '=~' . $TEST_EXPAND_DLLPATH let home = substitute($HOME, '\\', '/', 'g') - execute 'call assert_equal("' . home . $TEST_EXPAND_DLLPATH . '", &' . a:optname . ')' + execute 'call assert_equal("' . home . $TEST_EXPAND_DLLPATH . '", &' . a:optname . ')' finally execute 'let &' . a:optname . ' = dllpath_save' let $TEST_EXPAND_DLLPATH = ''
--- a/src/testdir/test_expand_func.vim +++ b/src/testdir/test_expand_func.vim @@ -7,15 +7,15 @@ let s:slnum = str2nr(expand('<slnum>')) let s:sflnum = str2nr(expand('<sflnum>')) func s:expand_sfile() - return expand('<sfile>') + return expand('<sfile>') endfunc func s:expand_slnum() - return str2nr(expand('<slnum>')) + return str2nr(expand('<slnum>')) endfunc func s:expand_sflnum() - return str2nr(expand('<sflnum>')) + return str2nr(expand('<sflnum>')) endfunc " This test depends on the location in the test file, put it first.
--- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -456,7 +456,7 @@ func Test_move_folds_around_manual() %foldopen! 13m7 call Check_foldlevels([1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0]) - + bw! endfunc @@ -705,7 +705,7 @@ func Test_fold_create_marker_in_C() let content =<< trim [CODE] /* * comment - * + * * */ int f(int* p) {
--- a/src/testdir/test_goto.vim +++ b/src/testdir/test_goto.vim @@ -17,7 +17,7 @@ endfunc func Test_gD() let lines =<< trim [CODE] int x; - + int func(void) { return x; @@ -30,7 +30,7 @@ endfunc func Test_gD_too() let lines =<< trim [CODE] Filename x; - + int Filename int func() { Filename x; @@ -44,7 +44,7 @@ func Test_gD_comment() let lines =<< trim [CODE] /* int x; */ int x; - + int func(void) { return x; @@ -58,7 +58,7 @@ func Test_gD_inline_comment() let lines =<< trim [CODE] int y /* , x */; int x; - + int func(void) { return x; @@ -72,7 +72,7 @@ func Test_gD_string() let lines =<< trim [CODE] char *s[] = "x"; int x = 1; - + int func(void) { return x; @@ -85,7 +85,7 @@ endfunc func Test_gD_string_same_line() let lines =<< trim [CODE] char *s[] = "x", int x = 1; - + int func(void) { return x; @@ -99,7 +99,7 @@ func Test_gD_char() let lines =<< trim [CODE] char c = 'x'; int x = 1; - + int func(void) { return x; @@ -112,7 +112,7 @@ endfunc func Test_gd() let lines =<< trim [CODE] int x; - + int func(int x) { return x; @@ -146,7 +146,7 @@ func Test_gd_not_local() { return x; } - + int func2(int x) { return x; @@ -173,9 +173,9 @@ func Test_gd_missing_braces() def func1(a) a + 1 end - + a = 1 - + def func2() return a end @@ -252,11 +252,11 @@ func Test_gd_inline_comment_body() int func(void) { int y /* , x */; - + for (/* int x = 0 */; y < 2; y++); - + int x = 0; - + return x; } [CODE] @@ -292,7 +292,7 @@ func Test_gd_string() { char *s = "x"; int x = 1; - + return x; } [CODE] @@ -304,7 +304,7 @@ func Test_gd_string_only() int func(void) { char *s = "x"; - + return x; } [CODE] @@ -341,7 +341,7 @@ func Test_gd_local_block() char *b = "NULL"; return b; } - + return 0; } [CODE]
--- a/src/testdir/test_increment.vim +++ b/src/testdir/test_increment.vim @@ -704,7 +704,7 @@ endfunc " Text: " 1 23 " 4 56 -" +" " Expected: " 1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with . " 1 26
--- a/src/testdir/test_indent.vim +++ b/src/testdir/test_indent.vim @@ -175,7 +175,7 @@ func Test_modeline_indent_expr() endfunc func Test_indent_func_with_gq() - + function GetTeXIndent() " Sample indent expression for TeX files let lnum = prevnonblank(v:lnum - 1) @@ -186,7 +186,7 @@ func Test_indent_func_with_gq() let line = getline(lnum) let ind = indent(lnum) " Add a 'shiftwidth' after beginning of environments. - if line =~ '\\begin{center}' + if line =~ '\\begin{center}' let ind = ind + shiftwidth() endif return ind @@ -248,7 +248,7 @@ func Test_indent_func_with_gq() bwipe! delmark ab - delfunction GetTeXIndent + delfunction GetTeXIndent endfu func Test_formatting_keeps_first_line_indent()
--- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -2149,7 +2149,7 @@ endfunc func Test_ins_complete_end_of_line() " this was reading past the end of the line - new + new norm 8oý sil! norm o
--- a/src/testdir/test_listchars.vim +++ b/src/testdir/test_listchars.vim @@ -506,7 +506,7 @@ func Test_listchars_composing() set list set listchars=eol:$,space:_,nbsp:= - + let nbsp1 = nr2char(0xa0) let nbsp2 = nr2char(0x202f) call append(0, [
--- a/src/testdir/test_map_functions.vim +++ b/src/testdir/test_map_functions.vim @@ -1,7 +1,7 @@ " Tests for maparg(), mapcheck(), mapset(), maplist() " Also test utf8 map with a 0x80 byte. -func s:SID() +func s:SID() return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')) endfunc @@ -18,7 +18,7 @@ func Test_maparg() call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 'foo<C-V>', \ 'lhsraw': "foo\x80\xfc\x04V", 'lhsrawalt': "foo\x16", \ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'scriptversion': 1, - \ 'lnum': lnum + 1, + \ 'lnum': lnum + 1, \ 'rhs': 'is<F4>foo', 'buffer': 0, 'abbr': 0, 'mode_bits': 0x47}, \ maparg('foo<C-V>', '', 0, 1)) call assert_equal({'silent': 1, 'noremap': 1, 'script': 1, 'lhs': 'bar',
--- a/src/testdir/test_method.vim +++ b/src/testdir/test_method.vim @@ -127,7 +127,7 @@ endfunc func Test_method_syntax() eval [1, 2, 3] ->sort( ) - eval [1, 2, 3] + eval [1, 2, 3] \ ->sort( \ ) eval [1, 2, 3]->sort()
--- a/src/testdir/test_mswin_event.vim +++ b/src/testdir/test_mswin_event.vim @@ -43,7 +43,7 @@ func SendKeyStr(keystring) endfor endfunc -" This tells Vim to execute the buffered keys as user commands, +" This tells Vim to execute the buffered keys as user commands, " ie. same as feekdeys with mode X would do. func ExecuteBufferedKeys() if has('gui_running') @@ -158,7 +158,7 @@ let s:VK = { let s:MOD_MASK_SHIFT = 0x02 let s:MOD_MASK_CTRL = 0x04 let s:MOD_MASK_ALT = 0x08 - + let s:vim_key_modifiers = [ \ ["", 0, []], \ ["S-", 2, [s:VK.LSHIFT]], @@ -431,7 +431,7 @@ func Test_mswin_event_character_keys() " Test for lowercase 'a' to 'z', VK codes 65(0x41) - 90(0x5A) " Note: VK_A-VK_Z virtual key codes coincide with uppercase ASCII codes A-Z. " eg VK_A is 65, and the ASCII character code for uppercase 'A' is also 65. -" Caution: these are interpreted as lowercase when Shift is NOT pressed. +" Caution: these are interpreted as lowercase when Shift is NOT pressed. " eg, sending VK_A (65) 'A' Key code without shift modifier, will produce ASCII " char 'a' (91) as the output. The ASCII codes for the lowercase letters are " numbered 32 higher than their uppercase versions. @@ -808,7 +808,7 @@ func Test_mswin_event_mouse() call MouseShiftWheelDown(2, 1) call feedkeys("H", 'Lx!') " should scroll from where it is (4) + visible buffer height - cmdheight - let shift_scroll_height = line('w$') - line('w0') - &cmdheight + let shift_scroll_height = line('w$') - line('w0') - &cmdheight call assert_equal(4 + shift_scroll_height, line('.')) " Shift Scroll Up @@ -821,7 +821,7 @@ func Test_mswin_event_mouse() call MSWinMouseEvent(0x100, 2, 1, 0, 0, 0x04) call feedkeys("H", 'Lx!') " should scroll from where it is (4) + visible buffer height - cmdheight - let shift_scroll_height = line('w$') - line('w0') - &cmdheight + let shift_scroll_height = line('w$') - line('w0') - &cmdheight call assert_equal(4 + shift_scroll_height, line('.')) " Shift Scroll Up (using MOD) @@ -854,7 +854,7 @@ func Test_mswin_event_mouse() call feedkeys('g0', 'Lx!') " should scroll from where it is (7) + window width call assert_equal(7 + winwidth(0), col('.')) - + " Shift Scroll Left call MouseShiftWheelLeft(1, 50) call feedkeys('g0', 'Lx!') @@ -880,8 +880,8 @@ func Test_mswin_event_mouse() \ substitute(e, '[<>]', '', 'g') .. '")<CR>' endfor - " Test various mouse buttons - "(0 - Left, 1 - Middle, 2 - Right, + " Test various mouse buttons + "(0 - Left, 1 - Middle, 2 - Right, " 0x300 - MOUSE_X1/FROM_LEFT_3RD_BUTTON, " 0x400 - MOUSE_X2/FROM_LEFT_4TH_BUTTON) for button in [0, 1, 2, 0x300, 0x400] @@ -971,10 +971,10 @@ func Test_mswin_event_error_handling() let args = #{button: 0, row: 2, col: 4, move: 0, multiclick: 0, modifiers: 0} call assert_fails("call test_mswin_event('a1b2c3', args)", 'E475:') call assert_fails("call test_mswin_event(test_null_string(), {})", 'E475:') - + call assert_fails("call test_mswin_event([], args)", 'E1174:') call assert_fails("call test_mswin_event('abc', [])", 'E1206:') - + call assert_false(test_mswin_event('mouse', test_null_dict())) let args = #{row: 2, col: 4, multiclick: 0, modifiers: 0} call assert_false(test_mswin_event('mouse', args))
--- a/src/testdir/test_normal.vim +++ b/src/testdir/test_normal.vim @@ -2209,7 +2209,7 @@ func Test_normal29_brace() a character like this: .NH End of text here - + [DATA] call assert_equal(expected, getline(1, '$'))
--- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -16,7 +16,7 @@ func ListMonths() if !empty(entered) let mth = filter(mth, 'v:val=~"^".entered') endif - call complete(1, mth) + call complete(1, mth) return '' endfunc @@ -74,7 +74,7 @@ func Test_popup_complete() call feedkeys("aJu\<f5>\<c-p>l\<c-y>", 'tx') call assert_equal(["Jul"], getline(1,2)) %d - + " any-non printable, non-white character: Add this character and " reduce number of matches call feedkeys("aJu\<f5>\<c-p>l\<c-n>\<c-y>", 'tx') @@ -96,7 +96,7 @@ func Test_popup_complete() call feedkeys("aJ\<f5>".repeat("\<c-n>",3)."\<c-l>\<esc>", 'tx') call assert_equal(["J"], getline(1,2)) %d - + " <c-l> - Insert one character from the current match call feedkeys("aJ\<f5>".repeat("\<c-n>",4)."\<c-l>\<esc>", 'tx') call assert_equal(["January"], getline(1,2)) @@ -856,7 +856,7 @@ func Test_popup_position() call term_sendkeys(buf, "jI123456789_\<Esc>") call term_sendkeys(buf, "GA\<C-N>") call VerifyScreenDump(buf, 'Test_popup_position_04', {'rows': 10}) - + call term_sendkeys(buf, "\<Esc>u") call StopVimInTerminal(buf) endfunc
--- a/src/testdir/test_popupwin_textprop.vim +++ b/src/testdir/test_popupwin_textprop.vim @@ -21,7 +21,7 @@ func Test_textprop_popup() \ bufnr: bufnr('%'), \ }) let winid = popup_create('the text', #{ - \ pos: 'botleft', + \ pos: 'botleft', \ textprop: 'popupMarker', \ border: [], \ padding: [0,1,0,1], @@ -67,25 +67,25 @@ func Test_textprop_popup_corners() \ type: 'popupMarker', \ }) let winid = popup_create('bottom left', #{ - \ pos: 'botleft', + \ pos: 'botleft', \ textprop: 'popupMarker', \ textpropwin: win_getid(), \ padding: [0,1,0,1], \ }) let winid = popup_create('bottom right', #{ - \ pos: 'botright', + \ pos: 'botright', \ textprop: 'popupMarker', \ border: [], \ padding: [0,1,0,1], \ }) let winid = popup_create('top left', #{ - \ pos: 'topleft', + \ pos: 'topleft', \ textprop: 'popupMarker', \ border: [], \ padding: [0,1,0,1], \ }) let winid = popup_create('top right', #{ - \ pos: 'topright', + \ pos: 'topright', \ textprop: 'popupMarker', \ padding: [0,1,0,1], \ }) @@ -127,14 +127,14 @@ func Test_textprop_popup_offsets() \ type: 'popupMarker', \ }) let winid = popup_create('bottom left', #{ - \ pos: 'botleft', + \ pos: 'botleft', \ line: -1, \ col: 2, \ textprop: 'popupMarker', \ padding: [0,1,0,1], \ }) let winid = popup_create('bottom right', #{ - \ pos: 'botright', + \ pos: 'botright', \ line: -1, \ col: -2, \ textprop: 'popupMarker', @@ -142,7 +142,7 @@ func Test_textprop_popup_offsets() \ padding: [0,1,0,1], \ }) let winid = popup_create('top left', #{ - \ pos: 'topleft', + \ pos: 'topleft', \ line: 1, \ col: 2, \ textprop: 'popupMarker', @@ -150,7 +150,7 @@ func Test_textprop_popup_offsets() \ padding: [0,1,0,1], \ }) let winid = popup_create('top right', #{ - \ pos: 'topright', + \ pos: 'topright', \ line: 1, \ col: -2, \ textprop: 'popupMarker',
--- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -1211,20 +1211,20 @@ func Test_efm1() "Xtestfile", linenr 16: yet another problem Error in "Xtestfile" at line 17: x should be a dot - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 ^ Error in "Xtestfile" at line 18: x should be a dot - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 .............^ Error in "Xtestfile" at line 19: x should be a dot - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 --------------^ Error in "Xtestfile" at line 20: x should be a dot - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 - ^ + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 + ^ Does anyone know what is the problem and how to correction it? "Xtestfile", line 21 col 9: What is the title of the quickfix window? @@ -1570,7 +1570,7 @@ func Test_efm2() failUnlessEqual raise self.failureException, \\ W:AssertionError: 34 != 33 - + -------------------------------------------------------------- Ran 27 tests in 0.063s [DATA]
--- a/src/testdir/test_regexp_latin.vim +++ b/src/testdir/test_regexp_latin.vim @@ -1149,7 +1149,7 @@ def Test_compare_column_matchstr() # matchstr(). enew setline(1, ['one', 'two', 'three']) - :3 + :3 :/ee bwipe! set re=1
--- a/src/testdir/test_scroll_opt.vim +++ b/src/testdir/test_scroll_opt.vim @@ -271,18 +271,18 @@ func Test_smoothscroll_wrap_long_line() call term_sendkeys(buf, ":set scrolloff=1\<CR>") call term_sendkeys(buf, "10|\<C-E>") call VerifyScreenDump(buf, 'Test_smooth_long_6', {}) - + " 'scrolloff' set to 1, scrolling down, cursor moves screen line up call term_sendkeys(buf, "\<C-E>") call term_sendkeys(buf, "gjgj") call term_sendkeys(buf, "\<C-Y>") call VerifyScreenDump(buf, 'Test_smooth_long_7', {}) - + " 'scrolloff' set to 2, scrolling up, cursor moves screen line down call term_sendkeys(buf, ":set scrolloff=2\<CR>") call term_sendkeys(buf, "10|\<C-E>") call VerifyScreenDump(buf, 'Test_smooth_long_8', {}) - + " 'scrolloff' set to 2, scrolling down, cursor moves screen line up call term_sendkeys(buf, "\<C-E>") call term_sendkeys(buf, "gj") @@ -320,7 +320,7 @@ func Test_smoothscroll_wrap_long_line() call term_sendkeys(buf, "3Gzt") call term_sendkeys(buf, "\<C-E>j") call VerifyScreenDump(buf, 'Test_smooth_long_15', {}) - + call StopVimInTerminal(buf) endfunc @@ -335,7 +335,7 @@ func Test_smoothscroll_one_long_line() call writefile(lines, 'XSmoothOneLong', 'D') let buf = RunVimInTerminal('-S XSmoothOneLong', #{rows: 6, cols: 40}) call VerifyScreenDump(buf, 'Test_smooth_one_long_1', {}) - + call term_sendkeys(buf, "\<C-E>") call VerifyScreenDump(buf, 'Test_smooth_one_long_2', {}) @@ -357,7 +357,7 @@ func Test_smoothscroll_long_line_showbre call writefile(lines, 'XSmoothLongShowbreak', 'D') let buf = RunVimInTerminal('-S XSmoothLongShowbreak', #{rows: 6, cols: 40}) call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_1', {}) - + call term_sendkeys(buf, "\<C-E>") call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_2', {}) @@ -465,7 +465,7 @@ func Test_smoothscroll_cursor_scrolloff( call NewWindow(10, 20) setl smoothscroll wrap setl scrolloff=3 - + " 120 chars are 6 screen lines call setline(1, "abcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRST") call setline(2, "below")
--- a/src/testdir/test_signals.vim +++ b/src/testdir/test_signals.vim @@ -133,7 +133,7 @@ func Test_signal_TSTP() sleep 100m " We resume after the suspend. Sleep a bit for the signal to take effect, - " also when running under valgrind. + " also when running under valgrind. exe 'silent !kill -s CONT ' .. pid_vim call WaitForAssert({-> assert_true(filereadable('XautoOut2'))}) sleep 10m
--- a/src/testdir/test_signs.vim +++ b/src/testdir/test_signs.vim @@ -1775,10 +1775,10 @@ func Test_sign_cursor_position() let lines =<< trim END call setline(1, [repeat('x', 75), 'mmmm', 'yyyy']) call cursor(2,1) - sign define s1 texthl=Search text==> - sign define s2 linehl=Pmenu + sign define s1 texthl=Search text==> + sign define s2 linehl=Pmenu redraw - sign place 10 line=2 name=s1 + sign place 10 line=2 name=s1 END call writefile(lines, 'XtestSigncolumn', 'D') let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
--- a/src/testdir/test_statusline.vim +++ b/src/testdir/test_statusline.vim @@ -413,7 +413,7 @@ func Test_statusline() " Test statusline works with 80+ items function! StatusLabel() redrawstatus - return '[label]' + return '[label]' endfunc let statusline = '%{StatusLabel()}' for i in range(150)
--- a/src/testdir/test_substitute.vim +++ b/src/testdir/test_substitute.vim @@ -707,7 +707,7 @@ func Test_sub_highlight_zero_match() endfunc func Test_nocatch_sub_failure_handling() - " normal error results in all replacements + " normal error results in all replacements func Foo() foobar endfunc
--- a/src/testdir/test_tagfunc.vim +++ b/src/testdir/test_tagfunc.vim @@ -93,7 +93,7 @@ func Test_tagfunc() delf NullTagFunc bwipe! - set tags& tfu& cpt& + set tags& tfu& cpt& call delete('Xfile1') endfunc
--- a/src/testdir/test_tagjump.vim +++ b/src/testdir/test_tagjump.vim @@ -743,7 +743,7 @@ func Test_tag_guess() let code =<< trim [CODE] int FUNC1 (int x) { } - int + int func2 (int y) { } int * func3 () { }
--- a/src/testdir/test_termcodes.vim +++ b/src/testdir/test_termcodes.vim @@ -894,7 +894,7 @@ func Test_term_mouse_multiple_clicks_to_ let save_term = &term let save_ttymouse = &ttymouse call test_override('no_query_mouse', 1) - + " 'mousetime' must be sufficiently large, or else the test is flaky when " using a ssh connection with X forwarding; i.e. ssh -X (issue #7563). set mouse=a term=xterm mousetime=600
--- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -2745,7 +2745,7 @@ func Test_prop_with_text_below_after_emp let lines =<< trim END vim9script - + setline(1, ['vim9script', '', 'three', '']) # Add text prop below empty line 2 with padding. @@ -2768,13 +2768,13 @@ func Test_prop_with_text_below_after_emp END call writefile(lines, 'XscriptPropBelowAfterEmpty', 'D') let buf = RunVimInTerminal('-S XscriptPropBelowAfterEmpty', #{rows: 8, cols: 60}) - call VerifyScreenDump(buf, 'Test_prop_below_after_empty_1', {}) + call VerifyScreenDump(buf, 'Test_prop_below_after_empty_1', {}) call term_sendkeys(buf, ":set number\<CR>") - call VerifyScreenDump(buf, 'Test_prop_below_after_empty_2', {}) + call VerifyScreenDump(buf, 'Test_prop_below_after_empty_2', {}) call term_sendkeys(buf, ":set nowrap\<CR>") - call VerifyScreenDump(buf, 'Test_prop_below_after_empty_3', {}) + call VerifyScreenDump(buf, 'Test_prop_below_after_empty_3', {}) call StopVimInTerminal(buf) endfunc @@ -3310,7 +3310,7 @@ func Test_insert_text_start_incl() prop_type_add('propnotincl', {highlight: 'NonText', start_incl: false}) prop_add(1, 15, {type: 'propnotincl', text: 'before '}) - set cindent sw=4 + set cindent sw=4 prop_type_add('argname', {highlight: 'DiffChange', start_incl: true}) prop_add(3, 10, {type: 'argname', text: 'arg: '}) END @@ -3751,7 +3751,7 @@ func Test_text_prop_diff_mode() call StopVimInTerminal(buf) endfunc - + func Test_error_when_using_negative_id() call prop_type_add('test1', #{highlight: 'ErrorMsg'}) call prop_add(1, 1, #{type: 'test1', text: 'virtual'})
--- a/src/testdir/test_timers.vim +++ b/src/testdir/test_timers.vim @@ -393,7 +393,7 @@ endfunc " vgetc(). func Test_nocatch_timer_garbage_collect() " FIXME: why does this fail only on MacOS M1? - try + try CheckNotMacM1 catch /Skipped/ let g:skipped_reason = v:exception
--- a/src/testdir/test_true_false.vim +++ b/src/testdir/test_true_false.vim @@ -47,11 +47,11 @@ func Test_if() endfunc function Try_arg_true_false(expr, false_val, true_val) - for v in ['v:false', '0', '"0"', '"foo"', '" "'] + for v in ['v:false', '0', '"0"', '"foo"', '" "'] let r = eval(substitute(a:expr, '%v%', v, '')) call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . string(a:false_val) . ' but ' . string(r)) endfor - for v in ['v:true', '1', '"1"', '"1foo"'] + for v in ['v:true', '1', '"1"', '"1foo"'] let r = eval(substitute(a:expr, '%v%', v, '')) call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . string(a:true_val) . ' but ' . string(r)) endfor @@ -115,11 +115,11 @@ func Test_true_false_arg() endfunc function Try_arg_non_zero(expr, false_val, true_val) - for v in ['v:false', '0', '[1]', '{2:3}', '3.4'] + for v in ['v:false', '0', '[1]', '{2:3}', '3.4'] let r = eval(substitute(a:expr, '%v%', v, '')) call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . a:false_val . ' but ' . r) endfor - for v in ['v:true', '1', '" "', '"0"'] + for v in ['v:true', '1', '" "', '"0"'] let r = eval(substitute(a:expr, '%v%', v, '')) call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . a:true_val . ' but ' . r) endfor @@ -135,14 +135,14 @@ func Test_non_zero_arg() call Try_arg_non_zero("shellescape('foo%', %v%)", "'foo%'", "'foo\\%'") " visualmode() needs to be called twice to check - for v in [v:false, 0, [1], {2:3}, 3.4] + for v in [v:false, 0, [1], {2:3}, 3.4] normal vv let r = visualmode(v) call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r) let r = visualmode(v) call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r) endfor - for v in [v:true, 1, " ", "0"] + for v in [v:true, 1, " ", "0"] normal vv let r = visualmode(v) call assert_equal('v', r, 'result for ' . v . ' is not "v" but ' . r)
--- a/src/testdir/test_utf8.vim +++ b/src/testdir/test_utf8.vim @@ -1,5 +1,5 @@ " Tests for Unicode manipulations - + source check.vim source view_util.vim source screendump.vim @@ -107,7 +107,7 @@ func Test_list2str_str2list_latin1() let save_encoding = &encoding set encoding=latin1 - + let lres = str2list(s, 1) let sres = list2str(l, 1) call assert_equal([65, 66, 67], str2list("ABC")) @@ -123,7 +123,7 @@ endfunc func Test_screenchar_utf8() new - " 1-cell, with composing characters + " 1-cell, with composing characters call setline(1, ["ABC\u0308"]) redraw call assert_equal([0x0041], screenchars(1, 1)) @@ -133,7 +133,7 @@ func Test_screenchar_utf8() call assert_equal("B", screenstring(1, 2)) call assert_equal("C\u0308", screenstring(1, 3)) - " 2-cells, with composing characters + " 2-cells, with composing characters let text = "\u3042\u3044\u3046\u3099" call setline(1, text) redraw
--- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1833,7 +1833,7 @@ def Test_assign_lambda() v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(any): bool') lines =<< trim END - echo filter([1, 2, 3], (_, v: string) => v + 1) + echo filter([1, 2, 3], (_, v: string) => v + 1) END v9.CheckDefAndScriptFailure(lines, 'E1051:') enddef @@ -1935,7 +1935,7 @@ def Test_var_func_call() endif return 'this' endfunc - var val: string = GetValue() + var val: string = GetValue() # env var is always a string var env = $TERM END
--- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -48,7 +48,7 @@ def Test_class_basic() lines =<< trim END vim9script class Something - endclass school's out + endclass school's out END v9.CheckScriptFailure(lines, 'E488:') @@ -623,7 +623,7 @@ def Test_class_member() TextPos.AddToCounter(3) assert_equal(3, TextPos.counter) assert_fails('echo TextPos.noSuchMember', 'E1338:') - + def GetCounter(): number return TextPos.counter enddef
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -2085,7 +2085,7 @@ def Test_disassemble_return_bool() '8 COND2BOOL\_s*' .. '9 STORE $3\_s*' .. 'return name\_s*' .. - '\d\+ LOAD $3\_s*' .. + '\d\+ LOAD $3\_s*' .. '\d\+ RETURN', instr) assert_equal(true, InvertBool())
--- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -44,7 +44,7 @@ def Test_expr1_ternary() echo ['a'] + (1 ? ['b'] : ['c'] # comment ) - # with constant condition expression is not evaluated + # with constant condition expression is not evaluated assert_equal('one', 1 ? 'one' : xxx) var Some: func = function('len') @@ -74,7 +74,7 @@ def Test_expr1_ternary_vimscript() # check line continuation var lines =<< trim END var name = 1 - ? 'yes' + ? 'yes' : 'no' assert_equal('yes', name) END @@ -82,7 +82,7 @@ def Test_expr1_ternary_vimscript() lines =<< trim END var name = v:false - ? 'yes' + ? 'yes' : 'no' assert_equal('no', name) END @@ -90,7 +90,7 @@ def Test_expr1_ternary_vimscript() lines =<< trim END var name = v:false ? - 'yes' : + 'yes' : 'no' assert_equal('no', name) END @@ -98,7 +98,7 @@ def Test_expr1_ternary_vimscript() lines =<< trim END var name = v:false ? # comment - 'yes' : + 'yes' : # comment 'no' # comment assert_equal('no', name) @@ -317,22 +317,22 @@ def Test_expr2_vimscript() # check line continuation var lines =<< trim END var name = 0 - || 1 + || 1 assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false - || v:true - || v:false + || v:true + || v:false assert_equal(v:true, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false || - v:true || + v:true || v:false assert_equal(v:true, name) END @@ -341,7 +341,7 @@ def Test_expr2_vimscript() lines =<< trim END var name = v:false || # comment # comment - v:true || + v:true || # comment v:false # comment assert_equal(v:true, name) @@ -456,23 +456,23 @@ def Test_expr3_vimscript() # check line continuation var lines =<< trim END var name = 0 - && 1 + && 1 assert_equal(false, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:true - && v:true - && v:true + && v:true + && v:true assert_equal(v:true, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:true && - v:true && - v:true + v:true && + v:true assert_equal(v:true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -480,9 +480,9 @@ def Test_expr3_vimscript() lines =<< trim END var name = v:true && # comment # comment - v:true && + v:true && # comment - v:true + v:true assert_equal(v:true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -887,7 +887,7 @@ def Test_expr4_compare_null() # variables declared at script level used in a :def function lines =<< trim END vim9script - + var l_decl: list<number> var l_empty = [] var l_null = null_list @@ -914,7 +914,7 @@ def Test_expr4_compare_null() assert_true(caught) enddef TestList() - + var b_decl: blob var b_empty = 0z var b_null = null_blob @@ -941,7 +941,7 @@ def Test_expr4_compare_null() assert_true(caught) enddef TestBlob() - + var d_decl: dict<number> var d_empty = {} var d_null = null_dict @@ -1274,7 +1274,7 @@ def Test_expr4_vim9script() # check line continuation var lines =<< trim END var name = 0 - < 1 + < 1 assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1282,14 +1282,14 @@ def Test_expr4_vim9script() lines =<< trim END var name = 123 # comment - != 123 + != 123 assert_equal(false, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = 123 == - 123 + 123 assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1297,7 +1297,7 @@ def Test_expr4_vim9script() lines =<< trim END var list = [1, 2, 3] var name = list - is list + is list assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1306,7 +1306,7 @@ def Test_expr4_vim9script() var list = [1, 2, 3] var name = list # comment # comment - is list + is list assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1314,7 +1314,7 @@ def Test_expr4_vim9script() lines =<< trim END var myblob = 0z1234 var name = myblob - isnot 0z11 + isnot 0z11 assert_equal(true, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1526,7 +1526,7 @@ def Test_expr6_vim9script() # check line continuation var lines =<< trim END var name = 11 - + 77 + + 77 - 22 assert_equal(66, name) END @@ -1551,7 +1551,7 @@ def Test_expr6_vim9script() lines =<< trim END var name = 'one' - .. 'two' + .. 'two' assert_equal('onetwo', name) END v9.CheckDefAndScriptSuccess(lines) @@ -1859,7 +1859,7 @@ def Test_expr7_vim9script() # check line continuation var lines =<< trim END var name = 11 - * 22 + * 22 / 3 assert_equal(80, name) END @@ -1867,7 +1867,7 @@ def Test_expr7_vim9script() lines =<< trim END var name = 25 - % 10 + % 10 assert_equal(5, name) END v9.CheckDefAndScriptSuccess(lines) @@ -1877,14 +1877,14 @@ def Test_expr7_vim9script() # comment # comment - % 10 + % 10 assert_equal(5, name) END v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = 11 * - 22 / + 22 / 3 assert_equal(80, name) END @@ -2775,7 +2775,7 @@ def Test_expr9_dict() var dkeys = {['key']: 'string', [12]: 'numberexpr', 34: 'number', - [true]: 'bool'} + [true]: 'bool'} assert_equal('string', dkeys['key']) assert_equal('numberexpr', dkeys[12]) assert_equal('number', dkeys[34]) @@ -2798,7 +2798,7 @@ def Test_expr9_dict() assert_equal('dict<list<unknown>>', typename(dl)) END v9.CheckDefAndScriptSuccess(lines) - + # legacy syntax doesn't work v9.CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1) v9.CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1) @@ -3206,7 +3206,7 @@ enddef def Test_expr_member_vim9script() var lines =<< trim END var d = {one: - 'one', + 'one', two: 'two', 1: 1, _: 2} @@ -3494,19 +3494,19 @@ def Test_expr9_legacy_script() assert_equal('ok', g:LegacyReturn()) lines =<< trim END - vim9script - def GetNumber(): number + vim9script + def GetNumber(): number legacy return notexists - enddef + enddef echo GetNumber() END v9.CheckScriptFailure(lines, 'E121: Undefined variable: notexists') lines =<< trim END - vim9script - def GetNumber(): number - legacy return range(3)->map('v:val + 1') - enddef + vim9script + def GetNumber(): number + legacy return range(3)->map('v:val + 1') + enddef echo GetNumber() END v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<number>') @@ -3631,7 +3631,7 @@ def Test_expr9_method_call() var Join = (l) => join(l, 'x') assert_equal('axb', ['a', 'b']->(Join)()) - + var sorted = [3, 1, 2] -> sort() assert_equal([1, 2, 3], sorted)
index 44a8d4b106532168bc50cb3c5058df8b641c5a62..f9ff3bc3e6c1c5a4c2d26bb333bb6f823678b88c GIT binary patch literal 104198 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 K%s#+z_J0A-!q5r;
--- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -2656,7 +2656,7 @@ def Test_autoload_mapping() import autoload 'toggle.vim' - nnoremap <silent> <expr> tt toggle.Toggle() + nnoremap <silent> <expr> tt toggle.Toggle() nnoremap <silent> xx <ScriptCmd>toggle.Doit()<CR> nnoremap <silent> yy <Cmd>toggle.Doit()<CR> END
--- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -301,7 +301,7 @@ func Test_cmdline_history_order() call test_settime(39) call histadd(':', "echo '39'") wviminfo Xviminfo - + call histdel(':') rviminfo Xviminfo call assert_equal("echo '39'", histget(':', -1)) @@ -560,7 +560,7 @@ func Test_viminfo_encoding() sp Xviminfo call assert_equal('latin1', &fenc) close - + call histdel(':') rviminfo Xviminfo call assert_equal("echo 'é'", histget(':', -1))
--- a/src/testdir/test_virtualedit.vim +++ b/src/testdir/test_virtualedit.vim @@ -585,14 +585,14 @@ func Test_virtualedit_mouse() set virtualedit& endfunc -" this was replacing the NUL at the end of the line +" this was replacing the NUL at the end of the line func Test_virtualedit_replace_after_tab() new s/\v/ 0 set ve=all let @" = '' sil! norm vPvr0 - + call assert_equal("\t0", getline(1)) set ve& bwipe!
--- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1167,8 +1167,8 @@ endfunc func Test_visual_put_in_block_using_zp() new " paste using zP - call setline(1, ['/path;text', '/path;text', '/path;text', '', - \ '/subdir', + call setline(1, ['/path;text', '/path;text', '/path;text', '', + \ '/subdir', \ '/longsubdir', \ '/longlongsubdir']) exe "normal! 5G\<c-v>2j$y" @@ -1176,8 +1176,8 @@ func Test_visual_put_in_block_using_zp() call assert_equal(['/path/subdir;text', '/path/longsubdir;text', '/path/longlongsubdir;text'], getline(1, 3)) %d " paste using zP - call setline(1, ['/path;text', '/path;text', '/path;text', '', - \ '/subdir', + call setline(1, ['/path;text', '/path;text', '/path;text', '', + \ '/subdir', \ '/longsubdir', \ '/longlongsubdir']) exe "normal! 5G\<c-v>2j$y" @@ -1190,7 +1190,7 @@ func Test_visual_put_in_block_using_zy_a new " Test 1) Paste using zp - after the cursor without trailing spaces - call setline(1, ['/path;text', '/path;text', '/path;text', '', + call setline(1, ['/path;text', '/path;text', '/path;text', '', \ 'texttext /subdir columntext', \ 'texttext /longsubdir columntext', \ 'texttext /longlongsubdir columntext']) @@ -1200,7 +1200,7 @@ func Test_visual_put_in_block_using_zy_a " Test 2) Paste using zP - in front of the cursor without trailing spaces %d - call setline(1, ['/path;text', '/path;text', '/path;text', '', + call setline(1, ['/path;text', '/path;text', '/path;text', '', \ 'texttext /subdir columntext', \ 'texttext /longsubdir columntext', \ 'texttext /longlongsubdir columntext']) @@ -1210,7 +1210,7 @@ func Test_visual_put_in_block_using_zy_a " Test 3) Paste using p - with trailing spaces %d - call setline(1, ['/path;text', '/path;text', '/path;text', '', + call setline(1, ['/path;text', '/path;text', '/path;text', '', \ 'texttext /subdir columntext', \ 'texttext /longsubdir columntext', \ 'texttext /longlongsubdir columntext']) @@ -1220,7 +1220,7 @@ func Test_visual_put_in_block_using_zy_a " Test 4) Paste using P - with trailing spaces %d - call setline(1, ['/path;text', '/path;text', '/path;text', '', + call setline(1, ['/path;text', '/path;text', '/path;text', '', \ 'texttext /subdir columntext', \ 'texttext /longsubdir columntext', \ 'texttext /longlongsubdir columntext']) @@ -1230,7 +1230,7 @@ func Test_visual_put_in_block_using_zy_a " Test 5) Yank with spaces inside the block %d - call setline(1, ['/path;text', '/path;text', '/path;text', '', + call setline(1, ['/path;text', '/path;text', '/path;text', '', \ 'texttext /sub dir/ columntext', \ 'texttext /lon gsubdir/ columntext', \ 'texttext /lon glongsubdir/ columntext'])
--- a/src/testdir/test_winbuf_close.vim +++ b/src/testdir/test_winbuf_close.vim @@ -219,7 +219,7 @@ func Test_window_close_splitright_noequa execute "normal \<c-w>b" let h = winheight(0) let w = win_getid() - new + new q call assert_equal(h, winheight(0), "Window height does not match eight before opening and closing another window") call assert_equal(w, win_getid(), "Did not return to original window after opening and closing a window")
--- a/src/testdir/test_xxd.vim +++ b/src/testdir/test_xxd.vim @@ -232,7 +232,7 @@ func Test_xxd() }; unsigned int varName_len = 11; [CODE] - + call assert_equal(expected, getline(1,'$'), s:Mess(s:test)) endfor @@ -289,7 +289,7 @@ func Test_xxd_patch() exe cmd1 exe cmd2 call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 46 46 ::EE::::FF'], readfile('Xxxdout')) - + call writefile(["2: 41 41", "08: 42 42"], 'Xxxdin') call writefile(['::::::::'], 'Xxxdfile') exe cmd1 @@ -305,7 +305,7 @@ func Test_xxd_patch() exe cmd1 exe cmd2 call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 42 44 46 46 ::EE::::BDFF'], readfile('Xxxdout')) - + call delete('Xxxdout') endfunc
--- a/src/testdir/unix.vim +++ b/src/testdir/unix.vim @@ -2,7 +2,7 @@ " Always use "sh", don't use the value of "$SHELL". set shell=sh -" Only when the +eval feature is present. +" Only when the +eval feature is present. if 1 " While some tests overwrite $HOME to prevent them from polluting user files, " we need to remember the original value so that we can tell external systems
--- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -195,14 +195,14 @@ endfunc # CheckLegacyAndVim9Success() export def CheckTransLegacySuccess(lines: list<string>) var legacylines = lines->mapnew((_, v) => - v->substitute('\<VAR\>', 'let', 'g') - ->substitute('\<LET\>', 'let', 'g') - ->substitute('\<LSTART\>', '{', 'g') - ->substitute('\<LMIDDLE\>', '->', 'g') + v->substitute('\<VAR\>', 'let', 'g') + ->substitute('\<LET\>', 'let', 'g') + ->substitute('\<LSTART\>', '{', 'g') + ->substitute('\<LMIDDLE\>', '->', 'g') ->substitute('\<LEND\>', '}', 'g') ->substitute('\<TRUE\>', '1', 'g') ->substitute('\<FALSE\>', '0', 'g') - ->substitute('#"', ' "', 'g')) + ->substitute('#"', ' "', 'g')) CheckLegacySuccess(legacylines) enddef @@ -262,14 +262,14 @@ export def CheckLegacyAndVim9Failure(lin endif var legacylines = lines->mapnew((_, v) => - v->substitute('\<VAR\>', 'let', 'g') - ->substitute('\<LET\>', 'let', 'g') - ->substitute('#"', ' "', 'g')) + v->substitute('\<VAR\>', 'let', 'g') + ->substitute('\<LET\>', 'let', 'g') + ->substitute('#"', ' "', 'g')) CheckLegacyFailure(legacylines, legacyError) var vim9lines = lines->mapnew((_, v) => - v->substitute('\<VAR\>', 'var', 'g') - ->substitute('\<LET ', '', 'g')) + v->substitute('\<VAR\>', 'var', 'g') + ->substitute('\<LET ', '', 'g')) CheckDefExecFailure(vim9lines, defError) CheckScriptFailure(['vim9script'] + vim9lines, scriptError) enddef