vim-patch:8.1.1362: code and data in tests can be hard to read

Problem:    Code and data in tests can be hard to read.
Solution:   Use the new heredoc style. (Yegappan Lakshmanan, closes vim/vim#4400)
c79745a82f
This commit is contained in:
Jurica Bradaric
2019-09-23 22:12:02 +02:00
parent b5ac11139e
commit c84b39150f
10 changed files with 859 additions and 704 deletions

View File

@@ -425,18 +425,20 @@ func Test_autocmd_bufwipe_in_SessLoadPost()
set noswapfile set noswapfile
mksession! mksession!
let content = ['set nocp noswapfile', let content =<< trim [CODE]
\ 'let v:swapchoice="e"', set nocp noswapfile
\ 'augroup test_autocmd_sessionload', let v:swapchoice="e"
\ 'autocmd!', augroup test_autocmd_sessionload
\ 'autocmd SessionLoadPost * exe bufnr("Xsomething") . "bw!"', autocmd!
\ 'augroup END', autocmd SessionLoadPost * exe bufnr("Xsomething") . "bw!"
\ '', augroup END
\ 'func WriteErrors()',
\ ' call writefile([execute("messages")], "Xerrors")', func WriteErrors()
\ 'endfunc', call writefile([execute("messages")], "Xerrors")
\ 'au VimLeave * call WriteErrors()', endfunc
\ ] au VimLeave * call WriteErrors()
[CODE]
call writefile(content, 'Xvimrc') call writefile(content, 'Xvimrc')
call system(v:progpath. ' --headless -i NONE -u Xvimrc --noplugins -S Session.vim -c cq') call system(v:progpath. ' --headless -i NONE -u Xvimrc --noplugins -S Session.vim -c cq')
let errors = join(readfile('Xerrors')) let errors = join(readfile('Xerrors'))
@@ -454,27 +456,29 @@ func Test_autocmd_bufwipe_in_SessLoadPost2()
set noswapfile set noswapfile
mksession! mksession!
let content = ['set nocp noswapfile', let content =<< trim [CODE]
\ 'function! DeleteInactiveBufs()', set nocp noswapfile
\ ' tabfirst', function! DeleteInactiveBufs()
\ ' let tabblist = []', tabfirst
\ ' for i in range(1, tabpagenr(''$''))', let tabblist = []
\ ' call extend(tabblist, tabpagebuflist(i))', for i in range(1, tabpagenr(''$''))
\ ' endfor', call extend(tabblist, tabpagebuflist(i))
\ ' for b in range(1, bufnr(''$''))', endfor
\ ' if bufexists(b) && buflisted(b) && (index(tabblist, b) == -1 || bufname(b) =~# ''^$'')', for b in range(1, bufnr(''$''))
\ ' exec ''bwipeout '' . b', if bufexists(b) && buflisted(b) && (index(tabblist, b) == -1 || bufname(b) =~# ''^$'')
\ ' endif', exec ''bwipeout '' . b
\ ' endfor', endif
\ ' echomsg "SessionLoadPost DONE"', endfor
\ 'endfunction', echomsg "SessionLoadPost DONE"
\ 'au SessionLoadPost * call DeleteInactiveBufs()', endfunction
\ '', au SessionLoadPost * call DeleteInactiveBufs()
\ 'func WriteErrors()',
\ ' call writefile([execute("messages")], "Xerrors")', func WriteErrors()
\ 'endfunc', call writefile([execute("messages")], "Xerrors")
\ 'au VimLeave * call WriteErrors()', endfunc
\ ] au VimLeave * call WriteErrors()
[CODE]
call writefile(content, 'Xvimrc') call writefile(content, 'Xvimrc')
call system(v:progpath. ' --headless -i NONE -u Xvimrc --noplugins -S Session.vim -c cq') call system(v:progpath. ' --headless -i NONE -u Xvimrc --noplugins -S Session.vim -c cq')
let errors = join(readfile('Xerrors')) let errors = join(readfile('Xerrors'))
@@ -936,21 +940,23 @@ func Test_bufunload_all()
call writefile(['Test file Xxx1'], 'Xxx1')" call writefile(['Test file Xxx1'], 'Xxx1')"
call writefile(['Test file Xxx2'], 'Xxx2')" call writefile(['Test file Xxx2'], 'Xxx2')"
let content = [ let content =<< trim [CODE]
\ "func UnloadAllBufs()", func UnloadAllBufs()
\ " let i = 1", let i = 1
\ " while i <= bufnr('$')", while i <= bufnr('$')
\ " if i != bufnr('%') && bufloaded(i)", if i != bufnr('%') && bufloaded(i)
\ " exe i . 'bunload'", exe i . 'bunload'
\ " endif", endif
\ " let i += 1", let i += 1
\ " endwhile", endwhile
\ "endfunc", endfunc
\ "au BufUnload * call UnloadAllBufs()", au BufUnload * call UnloadAllBufs()
\ "au VimLeave * call writefile(['Test Finished'], 'Xout')", au VimLeave * call writefile(['Test Finished'], 'Xout')
\ "edit Xxx1", edit Xxx1
\ "split Xxx2", split Xxx2
\ "q"] q
[CODE]
call writefile(content, 'Xtest') call writefile(content, 'Xtest')
call delete('Xout') call delete('Xout')

View File

@@ -18,25 +18,25 @@ endfunc
func Test_cino_extern_c() func Test_cino_extern_c()
" Test for cino-E " Test for cino-E
let without_ind = [ let without_ind =<< trim [CODE]
\ '#ifdef __cplusplus', #ifdef __cplusplus
\ 'extern "C" {', extern "C" {
\ '#endif', #endif
\ 'int func_a(void);', int func_a(void);
\ '#ifdef __cplusplus', #ifdef __cplusplus
\ '}', }
\ '#endif' #endif
\ ] [CODE]
let with_ind = [ let with_ind =<< trim [CODE]
\ '#ifdef __cplusplus', #ifdef __cplusplus
\ 'extern "C" {', extern "C" {
\ '#endif', #endif
\ "\tint func_a(void);", int func_a(void);
\ '#ifdef __cplusplus', #ifdef __cplusplus
\ '}', }
\ '#endif' #endif
\ ] [CODE]
new new
setlocal cindent cinoptions=E0 setlocal cindent cinoptions=E0
call setline(1, without_ind) call setline(1, without_ind)
@@ -89,16 +89,32 @@ func Test_cindent_expr()
return v:lnum == 1 ? shiftwidth() : 0 return v:lnum == 1 ? shiftwidth() : 0
endfunc endfunc
setl expandtab sw=8 indentkeys+=; indentexpr=MyIndentFunction() setl expandtab sw=8 indentkeys+=; indentexpr=MyIndentFunction()
call setline(1, ['var_a = something()', 'b = something()']) let testinput =<< trim [CODE]
var_a = something()
b = something()
[CODE]
call setline(1, testinput)
call cursor(1, 1) call cursor(1, 1)
call feedkeys("^\<c-v>j$A;\<esc>", 'tnix') call feedkeys("^\<c-v>j$A;\<esc>", 'tnix')
call assert_equal([' var_a = something();', 'b = something();'], getline(1, '$')) let expected =<< trim [CODE]
var_a = something();
b = something();
[CODE]
call assert_equal(expected, getline(1, '$'))
%d %d
call setline(1, [' var_a = something()', ' b = something()']) let testinput =<< trim [CODE]
var_a = something()
b = something()
[CODE]
call setline(1, testinput)
call cursor(1, 1) call cursor(1, 1)
call feedkeys("^\<c-v>j$A;\<esc>", 'tnix') call feedkeys("^\<c-v>j$A;\<esc>", 'tnix')
call assert_equal([' var_a = something();', ' b = something()'], getline(1, '$')) let expected =<< trim [CODE]
var_a = something();
b = something()
[CODE]
call assert_equal(expected, getline(1, '$'))
bw! bw!
endfunc endfunc

View File

@@ -3,52 +3,56 @@
source shared.vim source shared.vim
func Test_exiting() func Test_exiting()
let after = [ let after =<< trim [CODE]
\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")', au QuitPre * call writefile(["QuitPre"], "Xtestout")
\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")', au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
\ 'quit', quit
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout')) call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
endif endif
call delete('Xtestout') call delete('Xtestout')
let after = [ let after =<< trim [CODE]
\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")', au QuitPre * call writefile(["QuitPre"], "Xtestout")
\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")', au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
\ 'help', help
\ 'wincmd w', wincmd w
\ 'quit', quit
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout')) call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
endif endif
call delete('Xtestout') call delete('Xtestout')
let after = [ let after =<< trim [CODE]
\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")', au QuitPre * call writefile(["QuitPre"], "Xtestout")
\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")', au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
\ 'split', split
\ 'new', new
\ 'qall', qall
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout')) call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
endif endif
call delete('Xtestout') call delete('Xtestout')
let after = [ let after =<< trim [CODE]
\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout", "a")', au QuitPre * call writefile(["QuitPre"], "Xtestout", "a")
\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")', au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")
\ 'augroup nasty', augroup nasty
\ ' au ExitPre * split', au ExitPre * split
\ 'augroup END', augroup END
\ 'quit', quit
\ 'augroup nasty', augroup nasty
\ ' au! ExitPre', au! ExitPre
\ 'augroup END', augroup END
\ 'quit', quit
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
call assert_equal(['QuitPre', 'ExitPre', 'QuitPre', 'ExitPre'], call assert_equal(['QuitPre', 'ExitPre', 'QuitPre', 'ExitPre'],
\ readfile('Xtestout')) \ readfile('Xtestout'))

View File

@@ -520,17 +520,18 @@ func Test_fold_create_marker_in_C()
set fdm=marker fdl=9 set fdm=marker fdl=9
set filetype=c set filetype=c
let content = [ let content =<< trim [CODE]
\ '/*', /*
\ ' * comment', * comment
\ ' * ', *
\ ' *', *
\ ' */', */
\ 'int f(int* p) {', int f(int* p) {
\ ' *p = 3;', *p = 3;
\ ' return 0;', return 0;
\ '}' }
\] [CODE]
for c in range(len(content) - 1) for c in range(len(content) - 1)
bw! bw!
call append(0, content) call append(0, content)

View File

@@ -15,262 +15,283 @@ func XTest_goto_decl(cmd, lines, line, col)
endfunc endfunc
func Test_gD() func Test_gD()
let lines = [ let lines =<< trim [CODE]
\ 'int x;', int x;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 1, 5) call XTest_goto_decl('gD', lines, 1, 5)
endfunc endfunc
func Test_gD_too() func Test_gD_too()
let lines = [ let lines =<< trim [CODE]
\ 'Filename x;', Filename x;
\ '',
\ 'int Filename', int Filename
\ 'int func() {', int func() {
\ ' Filename x;', Filename x;
\ ' return x;', return x;
\ ] [CODE]
call XTest_goto_decl('gD', lines, 1, 10) call XTest_goto_decl('gD', lines, 1, 10)
endfunc endfunc
func Test_gD_comment() func Test_gD_comment()
let lines = [ let lines =<< trim [CODE]
\ '/* int x; */', /* int x; */
\ 'int x;', int x;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 2, 5) call XTest_goto_decl('gD', lines, 2, 5)
endfunc endfunc
func Test_gD_inline_comment() func Test_gD_inline_comment()
let lines = [ let lines =<< trim [CODE]
\ 'int y /* , x */;', int y /* , x */;
\ 'int x;', int x;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 2, 5) call XTest_goto_decl('gD', lines, 2, 5)
endfunc endfunc
func Test_gD_string() func Test_gD_string()
let lines = [ let lines =<< trim [CODE]
\ 'char *s[] = "x";', char *s[] = "x";
\ 'int x = 1;', int x = 1;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 2, 5) call XTest_goto_decl('gD', lines, 2, 5)
endfunc endfunc
func Test_gD_string_same_line() func Test_gD_string_same_line()
let lines = [ let lines =<< trim [CODE]
\ 'char *s[] = "x", int x = 1;', char *s[] = "x", int x = 1;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 1, 22) call XTest_goto_decl('gD', lines, 1, 22)
endfunc endfunc
func Test_gD_char() func Test_gD_char()
let lines = [ let lines =<< trim [CODE]
\ "char c = 'x';", char c = 'x';
\ 'int x = 1;', int x = 1;
\ '',
\ 'int func(void)', int func(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gD', lines, 2, 5) call XTest_goto_decl('gD', lines, 2, 5)
endfunc endfunc
func Test_gd() func Test_gd()
let lines = [ let lines =<< trim [CODE]
\ 'int x;', int x;
\ '',
\ 'int func(int x)', int func(int x)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 3, 14) call XTest_goto_decl('gd', lines, 3, 14)
endfunc endfunc
func Test_gd_not_local() func Test_gd_not_local()
let lines = [ let lines =<< trim [CODE]
\ 'int func1(void)', int func1(void)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ '',
\ 'int func2(int x)', int func2(int x)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 3, 10) call XTest_goto_decl('gd', lines, 3, 10)
endfunc endfunc
func Test_gd_kr_style() func Test_gd_kr_style()
let lines = [ let lines =<< trim [CODE]
\ 'int func(x)', int func(x)
\ ' int x;', int x;
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 2, 7) call XTest_goto_decl('gd', lines, 2, 7)
endfunc endfunc
func Test_gd_missing_braces() func Test_gd_missing_braces()
let lines = [ let lines =<< trim [CODE]
\ 'def func1(a)', def func1(a)
\ ' a + 1', a + 1
\ 'end', end
\ '',
\ 'a = 1', a = 1
\ '',
\ 'def func2()', def func2()
\ ' return a', return a
\ 'end', end
\ ] [CODE]
call XTest_goto_decl('gd', lines, 1, 11) call XTest_goto_decl('gd', lines, 1, 11)
endfunc endfunc
func Test_gd_comment() func Test_gd_comment()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' /* int x; */', /* int x; */
\ ' int x;', int x;
\ ' return x;', return x;
\ '}', }
\] [CODE]
call XTest_goto_decl('gd', lines, 4, 7) call XTest_goto_decl('gd', lines, 4, 7)
endfunc endfunc
func Test_gd_comment_in_string() func Test_gd_comment_in_string()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' char *s ="//"; int x;', char *s ="//"; int x;
\ ' int x;', int x;
\ ' return x;', return x;
\ '}', }
\] [CODE]
call XTest_goto_decl('gd', lines, 3, 22) call XTest_goto_decl('gd', lines, 3, 22)
endfunc endfunc
func Test_gd_string_in_comment() func Test_gd_string_in_comment()
set comments= set comments=
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' /* " */ int x;', /* " */ int x;
\ ' int x;', int x;
\ ' return x;', return x;
\ '}', }
\] [CODE]
call XTest_goto_decl('gd', lines, 3, 15) call XTest_goto_decl('gd', lines, 3, 15)
set comments& set comments&
endfunc endfunc
func Test_gd_inline_comment() func Test_gd_inline_comment()
let lines = [ let lines =<< trim [CODE]
\ 'int func(/* x is an int */ int x)', int func(/* x is an int */ int x)
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 1, 32) call XTest_goto_decl('gd', lines, 1, 32)
endfunc endfunc
func Test_gd_inline_comment_only() func Test_gd_inline_comment_only()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void) /* one lonely x */', int func(void) /* one lonely x */
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 3, 10) call XTest_goto_decl('gd', lines, 3, 10)
endfunc endfunc
func Test_gd_inline_comment_body() func Test_gd_inline_comment_body()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' int y /* , x */;', int y /* , x */;
\ '',
\ ' for (/* int x = 0 */; y < 2; y++);', for (/* int x = 0 */; y < 2; y++);
\ '',
\ ' int x = 0;', int x = 0;
\ '',
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 7, 7) call XTest_goto_decl('gd', lines, 7, 7)
endfunc endfunc
func Test_gd_trailing_multiline_comment() func Test_gd_trailing_multiline_comment()
let lines = [ let lines =<< trim [CODE]
\ 'int func(int x) /* x is an int */', int func(int x) /* x is an int */
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 1, 14) call XTest_goto_decl('gd', lines, 1, 14)
endfunc endfunc
func Test_gd_trailing_comment() func Test_gd_trailing_comment()
let lines = [ let lines =<< trim [CODE]
\ 'int func(int x) // x is an int', int func(int x) // x is an int
\ '{', {
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 1, 14) call XTest_goto_decl('gd', lines, 1, 14)
endfunc endfunc
func Test_gd_string() func Test_gd_string()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' char *s = "x";', char *s = "x";
\ ' int x = 1;', int x = 1;
\ '',
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 4, 7) call XTest_goto_decl('gd', lines, 4, 7)
endfunc endfunc
func Test_gd_string_only() func Test_gd_string_only()
let lines = [ let lines =<< trim [CODE]
\ 'int func(void)', int func(void)
\ '{', {
\ ' char *s = "x";', char *s = "x";
\ '',
\ ' return x;', return x;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('gd', lines, 5, 10) call XTest_goto_decl('gd', lines, 5, 10)
endfunc endfunc
@@ -289,24 +310,25 @@ func Test_cursorline_keep_col()
endfunc endfunc
func Test_gd_local_block() func Test_gd_local_block()
let lines = [ let lines =<< trim [CODE]
\ ' int main()', int main()
\ '{', {
\ ' char *a = "NOT NULL";', char *a = "NOT NULL";
\ ' if(a)', if(a)
\ ' {', {
\ ' char *b = a;', char *b = a;
\ ' printf("%s\n", b);', printf("%s\n", b);
\ ' }', }
\ ' else', else
\ ' {', {
\ ' char *b = "NULL";', char *b = "NULL";
\ ' return b;', return b;
\ ' }', }
\ '',
\ ' return 0;', return 0;
\ '}', }
\ ] [CODE]
call XTest_goto_decl('1gd', lines, 11, 11) call XTest_goto_decl('1gd', lines, 11, 11)
endfunc endfunc

View File

@@ -65,34 +65,35 @@ func Test_mksession_utf8()
call wincol() call wincol()
mksession! test_mks.out mksession! test_mks.out
let li = filter(readfile('test_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^ *exe ''normal!\\)"') let li = filter(readfile('test_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^ *exe ''normal!\\)"')
let expected = [ let expected =<< trim [DATA]
\ 'normal! 016|', normal! 016|
\ 'normal! 016|', normal! 016|
\ 'normal! 016|', normal! 016|
\ 'normal! 08|', normal! 08|
\ 'normal! 08|', normal! 08|
\ 'normal! 016|', normal! 016|
\ 'normal! 016|', normal! 016|
\ 'normal! 016|', normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'", exe 'normal! ' . s:c . '|zs' . 8 . '|'
\ " normal! 08|", normal! 08|
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'", exe 'normal! ' . s:c . '|zs' . 8 . '|'
\ " normal! 08|", normal! 08|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|", normal! 016|
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", exe 'normal! ' . s:c . '|zs' . 16 . '|'
\ " normal! 016|" normal! 016|
\ ] [DATA]
call assert_equal(expected, li) call assert_equal(expected, li)
tabclose! tabclose!

View File

@@ -1563,52 +1563,94 @@ endfunc
fun! Test_normal29_brace() fun! Test_normal29_brace()
" basic test for { and } movements " basic test for { and } movements
let text= ['A paragraph begins after each empty line, and also at each of a set of', let text =<< trim [DATA]
\ 'paragraph macros, specified by the pairs of characters in the ''paragraphs''', A paragraph begins after each empty line, and also at each of a set of
\ 'option. The default is "IPLPPPQPP TPHPLIPpLpItpplpipbp", which corresponds to', paragraph macros, specified by the pairs of characters in the 'paragraphs'
\ 'the macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in', option. The default is "IPLPPPQPP TPHPLIPpLpItpplpipbp", which corresponds to
\ 'the first column). A section boundary is also a paragraph boundary.', the macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in
\ 'Note that a blank line (only containing white space) is NOT a paragraph', the first column). A section boundary is also a paragraph boundary.
\ 'boundary.', Note that a blank line (only containing white space) is NOT a paragraph
\ '', boundary.
\ '',
\ 'Also note that this does not include a ''{'' or ''}'' in the first column. When',
\ 'the ''{'' flag is in ''cpoptions'' then ''{'' in the first column is used as a', Also note that this does not include a '{' or '}' in the first column. When
\ 'paragraph boundary |posix|.', the '{' flag is in 'cpoptions' then '{' in the first column is used as a
\ '{', paragraph boundary |posix|.
\ 'This is no paragraph', {
\ 'unless the ''{'' is set', This is no paragraph
\ 'in ''cpoptions''', unless the '{' is set
\ '}', in 'cpoptions'
\ '.IP', }
\ 'The nroff macros IP separates a paragraph', .IP
\ 'That means, it must be a ''.''', The nroff macros IP separates a paragraph
\ 'followed by IP', That means, it must be a '.'
\ '.LPIt does not matter, if afterwards some', followed by IP
\ 'more characters follow.', .LPIt does not matter, if afterwards some
\ '.SHAlso section boundaries from the nroff', more characters follow.
\ 'macros terminate a paragraph. That means', .SHAlso section boundaries from the nroff
\ 'a character like this:', macros terminate a paragraph. That means
\ '.NH', a character like this:
\ 'End of text here'] .NH
End of text here
[DATA]
new new
call append(0, text) call append(0, text)
1 1
norm! 0d2} norm! 0d2}
call assert_equal(['.IP',
\ 'The nroff macros IP separates a paragraph', 'That means, it must be a ''.''', 'followed by IP', let expected =<< trim [DATA]
\ '.LPIt does not matter, if afterwards some', 'more characters follow.', '.SHAlso section boundaries from the nroff', .IP
\ 'macros terminate a paragraph. That means', 'a character like this:', '.NH', 'End of text here', ''], getline(1,'$')) The nroff macros IP separates a paragraph
That means, it must be a '.'
followed by IP
.LPIt does not matter, if afterwards some
more characters follow.
.SHAlso section boundaries from the nroff
macros terminate a paragraph. That means
a character like this:
.NH
End of text here
[DATA]
call assert_equal(expected, getline(1, '$'))
norm! 0d} norm! 0d}
call assert_equal(['.LPIt does not matter, if afterwards some', 'more characters follow.',
\ '.SHAlso section boundaries from the nroff', 'macros terminate a paragraph. That means', let expected =<< trim [DATA]
\ 'a character like this:', '.NH', 'End of text here', ''], getline(1, '$')) .LPIt does not matter, if afterwards some
more characters follow.
.SHAlso section boundaries from the nroff
macros terminate a paragraph. That means
a character like this:
.NH
End of text here
[DATA]
call assert_equal(expected, getline(1, '$'))
$ $
norm! d{ norm! d{
call assert_equal(['.LPIt does not matter, if afterwards some', 'more characters follow.',
\ '.SHAlso section boundaries from the nroff', 'macros terminate a paragraph. That means', 'a character like this:', ''], getline(1, '$')) let expected =<< trim [DATA]
.LPIt does not matter, if afterwards some
more characters follow.
.SHAlso section boundaries from the nroff
macros terminate a paragraph. That means
a character like this:
[DATA]
call assert_equal(expected, getline(1, '$'))
norm! d{ norm! d{
call assert_equal(['.LPIt does not matter, if afterwards some', 'more characters follow.', ''], getline(1,'$'))
let expected =<< trim [DATA]
.LPIt does not matter, if afterwards some
more characters follow.
[DATA]
call assert_equal(expected, getline(1, '$'))
" Test with { in cpooptions " Test with { in cpooptions
%d %d
call append(0, text) call append(0, text)
@@ -1616,21 +1658,62 @@ fun! Test_normal29_brace()
" set cpo+={ " set cpo+={
" 1 " 1
" norm! 0d2} " norm! 0d2}
" call assert_equal(['{', 'This is no paragraph', 'unless the ''{'' is set', 'in ''cpoptions''', '}', " let expected =<< trim [DATA]
" \ '.IP', 'The nroff macros IP separates a paragraph', 'That means, it must be a ''.''', " {
" \ 'followed by IP', '.LPIt does not matter, if afterwards some', 'more characters follow.', " This is no paragraph
" \ '.SHAlso section boundaries from the nroff', 'macros terminate a paragraph. That means', " unless the '{' is set
" \ 'a character like this:', '.NH', 'End of text here', ''], getline(1,'$')) " in 'cpoptions'
" }
" .IP
" The nroff macros IP separates a paragraph
" That means, it must be a '.'
" followed by IP
" .LPIt does not matter, if afterwards some
" more characters follow.
" .SHAlso section boundaries from the nroff
" macros terminate a paragraph. That means
" a character like this:
" .NH
" End of text here
"
" [DATA]
" call assert_equal(expected, getline(1, '$'))
"
" $ " $
" norm! d} " norm! d}
" call assert_equal(['{', 'This is no paragraph', 'unless the ''{'' is set', 'in ''cpoptions''', '}', " let expected =<< trim [DATA]
" \ '.IP', 'The nroff macros IP separates a paragraph', 'That means, it must be a ''.''', " {
" \ 'followed by IP', '.LPIt does not matter, if afterwards some', 'more characters follow.', " This is no paragraph
" \ '.SHAlso section boundaries from the nroff', 'macros terminate a paragraph. That means', " unless the '{' is set
" \ 'a character like this:', '.NH', 'End of text here', ''], getline(1,'$')) " in 'cpoptions'
" }
" .IP
" The nroff macros IP separates a paragraph
" That means, it must be a '.'
" followed by IP
" .LPIt does not matter, if afterwards some
" more characters follow.
" .SHAlso section boundaries from the nroff
" macros terminate a paragraph. That means
" a character like this:
" .NH
" End of text here
"
" [DATA]
" call assert_equal(expected, getline(1, '$'))
"
" norm! gg} " norm! gg}
" norm! d5} " norm! d5}
" call assert_equal(['{', 'This is no paragraph', 'unless the ''{'' is set', 'in ''cpoptions''', '}', ''], getline(1,'$')) "
" let expected =<< trim [DATA]
" {
" This is no paragraph
" unless the '{' is set
" in 'cpoptions'
" }
" [DATA]
" call assert_equal(expected, getline(1, '$'))
" clean up " clean up
set cpo-={ set cpo-={

View File

@@ -6,34 +6,34 @@ endif
source screendump.vim source screendump.vim
func Test_profile_func() func Test_profile_func()
let lines = [ let lines =<< trim [CODE]
\ 'profile start Xprofile_func.log', profile start Xprofile_func.log
\ 'profile func Foo*"', profile func Foo*
\ "func! Foo1()", func! Foo1()
\ "endfunc", endfunc
\ "func! Foo2()", func! Foo2()
\ " let l:count = 100", let l:count = 100
\ " while l:count > 0", while l:count > 0
\ " let l:count = l:count - 1", let l:count = l:count - 1
\ " endwhile", endwhile
\ "endfunc", endfunc
\ "func! Foo3()", func! Foo3()
\ "endfunc", endfunc
\ "func! Bar()", func! Bar()
\ "endfunc", endfunc
\ "call Foo1()", call Foo1()
\ "call Foo1()", call Foo1()
\ "profile pause", profile pause
\ "call Foo1()", call Foo1()
\ "profile continue", profile continue
\ "call Foo2()", call Foo2()
\ "call Foo3()", call Foo3()
\ "call Bar()", call Bar()
\ "if !v:profiling", if !v:profiling
\ " delfunc Foo2", delfunc Foo2
\ "endif", endif
\ "delfunc Foo3", delfunc Foo3
\ ] [CODE]
call writefile(lines, 'Xprofile_func.vim') call writefile(lines, 'Xprofile_func.vim')
call system(v:progpath call system(v:progpath
@@ -88,38 +88,38 @@ func Test_profile_func()
endfunc endfunc
func Test_profile_func_with_ifelse() func Test_profile_func_with_ifelse()
let lines = [ let lines =<< trim [CODE]
\ "func! Foo1()", func! Foo1()
\ " if 1", if 1
\ " let x = 0", let x = 0
\ " elseif 1", elseif 1
\ " let x = 1", let x = 1
\ " else", else
\ " let x = 2", let x = 2
\ " endif", endif
\ "endfunc", endfunc
\ "func! Foo2()", func! Foo2()
\ " if 0", if 0
\ " let x = 0", let x = 0
\ " elseif 1", elseif 1
\ " let x = 1", let x = 1
\ " else", else
\ " let x = 2", let x = 2
\ " endif", endif
\ "endfunc", endfunc
\ "func! Foo3()", func! Foo3()
\ " if 0", if 0
\ " let x = 0", let x = 0
\ " elseif 0", elseif 0
\ " let x = 1", let x = 1
\ " else", else
\ " let x = 2", let x = 2
\ " endif", endif
\ "endfunc", endfunc
\ "call Foo1()", call Foo1()
\ "call Foo2()", call Foo2()
\ "call Foo3()", call Foo3()
\ ] [CODE]
call writefile(lines, 'Xprofile_func.vim') call writefile(lines, 'Xprofile_func.vim')
call system(v:progpath call system(v:progpath
@@ -198,41 +198,41 @@ func Test_profile_func_with_ifelse()
endfunc endfunc
func Test_profile_func_with_trycatch() func Test_profile_func_with_trycatch()
let lines = [ let lines =<< trim [CODE]
\ "func! Foo1()", func! Foo1()
\ " try", try
\ " let x = 0", let x = 0
\ " catch", catch
\ " let x = 1", let x = 1
\ " finally", finally
\ " let x = 2", let x = 2
\ " endtry", endtry
\ "endfunc", endfunc
\ "func! Foo2()", func! Foo2()
\ " try", try
\ " throw 0", throw 0
\ " catch", catch
\ " let x = 1", let x = 1
\ " finally", finally
\ " let x = 2", let x = 2
\ " endtry", endtry
\ "endfunc", endfunc
\ "func! Foo3()", func! Foo3()
\ " try", try
\ " throw 0", throw 0
\ " catch", catch
\ " throw 1", throw 1
\ " finally", finally
\ " let x = 2", let x = 2
\ " endtry", endtry
\ "endfunc", endfunc
\ "call Foo1()", call Foo1()
\ "call Foo2()", call Foo2()
\ "try", try
\ " call Foo3()", call Foo3()
\ "catch", catch
\ "endtry", endtry
\ ] [CODE]
call writefile(lines, 'Xprofile_func.vim') call writefile(lines, 'Xprofile_func.vim')
call system(v:progpath call system(v:progpath
@@ -311,15 +311,15 @@ func Test_profile_func_with_trycatch()
endfunc endfunc
func Test_profile_file() func Test_profile_file()
let lines = [ let lines =<< trim [CODE]
\ 'func! Foo()', func! Foo()
\ 'endfunc', endfunc
\ 'for i in range(10)', for i in range(10)
\ ' " a comment', " a comment
\ ' call Foo()', call Foo()
\ 'endfor', endfor
\ 'call Foo()', call Foo()
\ ] [CODE]
call writefile(lines, 'Xprofile_file.vim') call writefile(lines, 'Xprofile_file.vim')
call system(v:progpath call system(v:progpath
@@ -450,26 +450,27 @@ func Test_profile_truncate_mbyte()
endfunc endfunc
func Test_profdel_func() func Test_profdel_func()
let lines = [ let lines =<< trim [CODE]
\ 'profile start Xprofile_file.log', profile start Xprofile_file.log
\ 'func! Foo1()', func! Foo1()
\ 'endfunc', endfunc
\ 'func! Foo2()', func! Foo2()
\ 'endfunc', endfunc
\ 'func! Foo3()', func! Foo3()
\ 'endfunc', endfunc
\ '',
\ 'profile func Foo1', profile func Foo1
\ 'profile func Foo2', profile func Foo2
\ 'call Foo1()', call Foo1()
\ 'call Foo2()', call Foo2()
\ '',
\ 'profile func Foo3', profile func Foo3
\ 'profdel func Foo2', profdel func Foo2
\ 'profdel func Foo3', profdel func Foo3
\ 'call Foo1()', call Foo1()
\ 'call Foo2()', call Foo2()
\ 'call Foo3()' ] call Foo3()
[CODE]
call writefile(lines, 'Xprofile_file.vim') call writefile(lines, 'Xprofile_file.vim')
call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q') call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q')
call assert_equal(0, v:shell_error) call assert_equal(0, v:shell_error)
@@ -496,14 +497,15 @@ endfunc
func Test_profdel_star() func Test_profdel_star()
" Foo() is invoked once before and once after 'profdel *'. " Foo() is invoked once before and once after 'profdel *'.
" So profiling should report it only once. " So profiling should report it only once.
let lines = [ let lines =<< trim [CODE]
\ 'profile start Xprofile_file.log', profile start Xprofile_file.log
\ 'func! Foo()', func! Foo()
\ 'endfunc', endfunc
\ 'profile func Foo', profile func Foo
\ 'call Foo()', call Foo()
\ 'profdel *', profdel *
\ 'call Foo()' ] call Foo()
[CODE]
call writefile(lines, 'Xprofile_file.vim') call writefile(lines, 'Xprofile_file.vim')
call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q') call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q')
call assert_equal(0, v:shell_error) call assert_equal(0, v:shell_error)

View File

@@ -775,68 +775,68 @@ func Test_efm1()
return return
endif endif
let l = [ let l =<< trim [DATA]
\ '"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.', "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
\ '"Xtestfile", line 6 col 19; this is an error', "Xtestfile", line 6 col 19; this is an error
\ 'gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c', gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
\ 'Xtestfile:9: parse error before `asd''', Xtestfile:9: parse error before `asd'
\ 'make: *** [vim] Error 1', make: *** [vim] Error 1
\ 'in file "Xtestfile" linenr 10: there is an error', in file "Xtestfile" linenr 10: there is an error
\ '',
\ '2 returned', 2 returned
\ '"Xtestfile", line 11 col 1; this is an error', "Xtestfile", line 11 col 1; this is an error
\ '"Xtestfile", line 12 col 2; this is another error', "Xtestfile", line 12 col 2; this is another error
\ '"Xtestfile", line 14:10; this is an error in column 10', "Xtestfile", line 14:10; this is an error in column 10
\ '=Xtestfile=, line 15:10; this is another error, but in vcol 10 this time', =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time
\ '"Xtestfile", linenr 16: yet another problem', "Xtestfile", linenr 16: yet another problem
\ 'Error in "Xtestfile" at line 17:', Error in "Xtestfile" at line 17:
\ 'x should be a dot', x should be a dot
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
\ ' ^', ^
\ 'Error in "Xtestfile" at line 18:', Error in "Xtestfile" at line 18:
\ 'x should be a dot', x should be a dot
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
\ '.............^', .............^
\ 'Error in "Xtestfile" at line 19:', Error in "Xtestfile" at line 19:
\ 'x should be a dot', x should be a dot
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
\ '--------------^', --------------^
\ 'Error in "Xtestfile" at line 20:', Error in "Xtestfile" at line 20:
\ 'x should be a dot', x should be a dot
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
\ ' ^', ^
\ '',
\ 'Does anyone know what is the problem and how to correction it?', 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?', "Xtestfile", line 21 col 9: What is the title of the quickfix window?
\ '"Xtestfile", line 22 col 9: What is the title of the quickfix window?' "Xtestfile", line 22 col 9: What is the title of the quickfix window?
\ ] [DATA]
call writefile(l, 'Xerrorfile1') call writefile(l, 'Xerrorfile1')
call writefile(l[:-2], 'Xerrorfile2') call writefile(l[:-2], 'Xerrorfile2')
let m = [ let m =<< trim [DATA]
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21', xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21
\ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22
\ ] [DATA]
call writefile(m, 'Xtestfile') call writefile(m, 'Xtestfile')
let save_efm = &efm let save_efm = &efm
@@ -895,20 +895,21 @@ func s:dir_stack_tests(cchar)
let save_efm=&efm let save_efm=&efm
set efm=%DEntering\ dir\ '%f',%f:%l:%m,%XLeaving\ dir\ '%f' set efm=%DEntering\ dir\ '%f',%f:%l:%m,%XLeaving\ dir\ '%f'
let lines = ["Entering dir 'dir1/a'", let lines =<< trim [DATA]
\ 'habits2.txt:1:Nine Healthy Habits', Entering dir 'dir1/a'
\ "Entering dir 'b'", habits2.txt:1:Nine Healthy Habits
\ 'habits3.txt:2:0 Hours of television', Entering dir 'b'
\ 'habits2.txt:7:5 Small meals', habits3.txt:2:0 Hours of television
\ "Entering dir 'dir1/c'", habits2.txt:7:5 Small meals
\ 'habits4.txt:3:1 Hour of exercise', Entering dir 'dir1/c'
\ "Leaving dir 'dir1/c'", habits4.txt:3:1 Hour of exercise
\ "Leaving dir 'dir1/a'", Leaving dir 'dir1/c'
\ 'habits1.txt:4:2 Liters of water', Leaving dir 'dir1/a'
\ "Entering dir 'dir2'", habits1.txt:4:2 Liters of water
\ 'habits5.txt:5:3 Cups of hot green tea', Entering dir 'dir2'
\ "Leaving dir 'dir2'" habits5.txt:5:3 Cups of hot green tea
\] Leaving dir 'dir2
[DATA]
Xexpr "" Xexpr ""
for l in lines for l in lines
@@ -942,18 +943,20 @@ func Test_efm_dirstack()
call mkdir('dir1/c') call mkdir('dir1/c')
call mkdir('dir2') call mkdir('dir2')
let lines = ["Nine Healthy Habits", let lines =<< trim [DATA]
\ "0 Hours of television", Nine Healthy Habits,
\ "1 Hour of exercise", 0 Hours of television,
\ "2 Liters of water", 1 Hour of exercise,
\ "3 Cups of hot green tea", 2 Liters of water,
\ "4 Short mental breaks", 3 Cups of hot green tea,
\ "5 Small meals", 4 Short mental breaks,
\ "6 AM wake up time", 5 Small meals,
\ "7 Minutes of laughter", 6 AM wake up time,
\ "8 Hours of sleep (at least)", 7 Minutes of laughter,
\ "9 PM end of the day and off to bed" 8 Hours of sleep (at least),
\ ] 9 PM end of the day and off to bed
[DATA]
call writefile(lines, 'habits1.txt') call writefile(lines, 'habits1.txt')
call writefile(lines, 'dir1/a/habits2.txt') call writefile(lines, 'dir1/a/habits2.txt')
call writefile(lines, 'dir1/a/b/habits3.txt') call writefile(lines, 'dir1/a/b/habits3.txt')
@@ -1049,21 +1052,22 @@ func Test_efm2()
call assert_equal([' 1 Xtestfile:^\VLine search text\$: '], l) call assert_equal([' 1 Xtestfile:^\VLine search text\$: '], l)
" Test for %P, %Q and %t format specifiers " Test for %P, %Q and %t format specifiers
let lines=["[Xtestfile1]", let lines =<< trim [DATA]
\ "(1,17) error: ';' missing", [Xtestfile1]
\ "(21,2) warning: variable 'z' not defined", (1,17) error: ';' missing
\ "(67,3) error: end of file found before string ended", (21,2) warning: variable 'z' not defined
\ "--", (67,3) error: end of file found before string ended
\ "", --
\ "[Xtestfile2]",
\ "--", [Xtestfile2]
\ "", --
\ "[Xtestfile3]",
\ "NEW compiler v1.1", [Xtestfile3]
\ "(2,2) warning: variable 'x' not defined", NEW compiler v1.1
\ "(67,3) warning: 's' already defined", (2,2) warning: variable 'x' not defined
\ "--" (67,3) warning: 's' already defined
\] -
[DATA]
set efm=%+P[%f]%r,(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%+Q--%r set efm=%+P[%f]%r,(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%+Q--%r
" To exercise the push/pop file functionality in quickfix, the test files " To exercise the push/pop file functionality in quickfix, the test files
" need to be created. " need to be created.
@@ -1085,11 +1089,13 @@ func Test_efm2()
call delete('Xtestfile3') call delete('Xtestfile3')
" Tests for %E, %C and %Z format specifiers " Tests for %E, %C and %Z format specifiers
let lines = ["Error 275", let lines =<< trim [DATA]
\ "line 42", Error 275
\ "column 3", line 42
\ "' ' expected after '--'" column 3
\] ' ' expected after '--'
[DATA]
set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m
cgetexpr lines cgetexpr lines
let l = getqflist() let l = getqflist()
@@ -1100,9 +1106,11 @@ func Test_efm2()
call assert_equal("\n' ' expected after '--'", l[0].text) call assert_equal("\n' ' expected after '--'", l[0].text)
" Test for %> " Test for %>
let lines = ["Error in line 147 of foo.c:", let lines =<< trim [DATA]
\"unknown variable 'i'" Error in line 147 of foo.c:
\] unknown variable 'i'
[DATA]
set efm=unknown\ variable\ %m,%E%>Error\ in\ line\ %l\ of\ %f:,%Z%m set efm=unknown\ variable\ %m,%E%>Error\ in\ line\ %l\ of\ %f:,%Z%m
cgetexpr lines cgetexpr lines
let l = getqflist() let l = getqflist()
@@ -1111,21 +1119,21 @@ func Test_efm2()
call assert_equal("\nunknown variable 'i'", l[0].text) call assert_equal("\nunknown variable 'i'", l[0].text)
" Test for %A, %C and other formats " Test for %A, %C and other formats
let lines = [ let lines =<< trim [DATA]
\"==============================================================", ==============================================================
\"FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest)", FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest)
\"--------------------------------------------------------------", --------------------------------------------------------------
\"Traceback (most recent call last):", Traceback (most recent call last):
\' File "unittests/dbfacadeTest.py", line 89, in testFoo', File "unittests/dbfacadeTest.py", line 89, in testFoo
\" self.assertEquals(34, dtid)", self.assertEquals(34, dtid)
\' File "/usr/lib/python2.2/unittest.py", line 286, in', File "/usr/lib/python2.2/unittest.py", line 286, in
\" failUnlessEqual", failUnlessEqual
\" raise self.failureException, \\", raise self.failureException, \\
\"AssertionError: 34 != 33", AssertionError: 34 != 33
\"",
\"--------------------------------------------------------------", --------------------------------------------------------------
\"Ran 27 tests in 0.063s" Ran 27 tests in 0.063s
\] [DATA]
set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
cgetexpr lines cgetexpr lines
let l = getqflist() let l = getqflist()

View File

@@ -20,25 +20,27 @@ func Test_after_comes_later()
if !has('packages') if !has('packages')
return return
endif endif
let before = [ let before =<< trim [CODE]
\ 'set nocp viminfo+=nviminfo', set nocp viminfo+=nviminfo
\ 'set guioptions+=M', set guioptions+=M
\ 'let $HOME = "/does/not/exist"', let $HOME = "/does/not/exist"
\ 'set loadplugins', set loadplugins
\ 'set rtp=Xhere,Xafter,Xanother', set rtp=Xhere,Xafter,Xanother
\ 'set packpath=Xhere,Xafter', set packpath=Xhere,Xafter
\ 'set nomore', set nomore
\ 'let g:sequence = ""', let g:sequence = ""
\ ] [CODE]
let after = [
\ 'redir! > Xtestout', let after =<< trim [CODE]
\ 'scriptnames', redir! > Xtestout
\ 'redir END', scriptnames
\ 'redir! > Xsequence', redir END
\ 'echo g:sequence', redir! > Xsequence
\ 'redir END', echo g:sequence
\ 'quit', redir END
\ ] quit
[CODE]
call mkdir('Xhere/plugin', 'p') call mkdir('Xhere/plugin', 'p')
call writefile(['let g:sequence .= "here "'], 'Xhere/plugin/here.vim') call writefile(['let g:sequence .= "here "'], 'Xhere/plugin/here.vim')
call mkdir('Xanother/plugin', 'p') call mkdir('Xanother/plugin', 'p')
@@ -77,15 +79,16 @@ func Test_pack_in_rtp_when_plugins_run()
if !has('packages') if !has('packages')
return return
endif endif
let before = [ let before =<< trim [CODE]
\ 'set nocp viminfo+=nviminfo', set nocp viminfo+=nviminfo
\ 'set guioptions+=M', set guioptions+=M
\ 'let $HOME = "/does/not/exist"', let $HOME = "/does/not/exist"
\ 'set loadplugins', set loadplugins
\ 'set rtp=Xhere', set rtp=Xhere
\ 'set packpath=Xhere', set packpath=Xhere
\ 'set nomore', set nomore
\ ] [CODE]
let after = [ let after = [
\ 'quit', \ 'quit',
\ ] \ ]
@@ -133,11 +136,12 @@ endfunc
func Test_compatible_args() func Test_compatible_args()
throw "skipped: Nvim is always 'nocompatible'" throw "skipped: Nvim is always 'nocompatible'"
let after = [ let after =<< trim [CODE]
\ 'call writefile([string(&compatible)], "Xtestout")', call writefile([string(&compatible)], "Xtestout")
\ 'set viminfo+=nviminfo', set viminfo+=nviminfo
\ 'quit', quit
\ ] [CODE]
if RunVim([], after, '-C') if RunVim([], after, '-C')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal('1', lines[0]) call assert_equal('1', lines[0])
@@ -154,14 +158,15 @@ endfunc
" Test the -o[N] and -O[N] arguments to open N windows split " Test the -o[N] and -O[N] arguments to open N windows split
" horizontally or vertically. " horizontally or vertically.
func Test_o_arg() func Test_o_arg()
let after = [ let after =<< trim [CODE]
\ 'call writefile([winnr("$"), call writefile([winnr("$"),
\ winheight(1), winheight(2), &lines, \ winheight(1), winheight(2), &lines,
\ winwidth(1), winwidth(2), &columns, \ winwidth(1), winwidth(2), &columns,
\ bufname(winbufnr(1)), bufname(winbufnr(2))], \ bufname(winbufnr(1)), bufname(winbufnr(2))],
\ "Xtestout")', \ "Xtestout")
\ 'qall', qall
\ ] [CODE]
if RunVim([], after, '-o2') if RunVim([], after, '-o2')
" Open 2 windows split horizontally. Expect: " Open 2 windows split horizontally. Expect:
" - 2 windows " - 2 windows
@@ -230,10 +235,11 @@ endfunc
" Test the -p[N] argument to open N tabpages. " Test the -p[N] argument to open N tabpages.
func Test_p_arg() func Test_p_arg()
let after = [ let after =<< trim [CODE]
\ 'call writefile(split(execute("tabs"), "\n"), "Xtestout")', call writefile(split(execute("tabs"), "\n"), "Xtestout")
\ 'qall', qall
\ ] [CODE]
if RunVim([], after, '-p2') if RunVim([], after, '-p2')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal(4, len(lines)) call assert_equal(4, len(lines))
@@ -290,10 +296,11 @@ endfunc
" -M resets 'modifiable' and 'write' " -M resets 'modifiable' and 'write'
" -R sets 'readonly' " -R sets 'readonly'
func Test_m_M_R() func Test_m_M_R()
let after = [ let after =<< trim [CODE]
\ 'call writefile([&write, &modifiable, &readonly, &updatecount], "Xtestout")', call writefile([&write, &modifiable, &readonly, &updatecount], "Xtestout")
\ 'qall', qall
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal(['1', '1', '0', '200'], lines) call assert_equal(['1', '1', '0', '200'], lines)
@@ -316,10 +323,11 @@ endfunc
" Test the -A, -F and -H arguments (Arabic, Farsi and Hebrew modes). " Test the -A, -F and -H arguments (Arabic, Farsi and Hebrew modes).
func Test_A_F_H_arg() func Test_A_F_H_arg()
let after = [ let after =<< trim [CODE]
\ 'call writefile([&rightleft, &arabic, 0, &hkmap], "Xtestout")', call writefile([&rightleft, &arabic, 0, &hkmap], "Xtestout")
\ 'qall', qall
\ ] [CODE]
" Use silent Ex mode to avoid the hit-Enter prompt for the warning that " Use silent Ex mode to avoid the hit-Enter prompt for the warning that
" 'encoding' is not utf-8. " 'encoding' is not utf-8.
if has('arabic') && &encoding == 'utf-8' && RunVim([], after, '-e -s -A') if has('arabic') && &encoding == 'utf-8' && RunVim([], after, '-e -s -A')
@@ -423,10 +431,11 @@ func Test_invalid_args()
endfunc endfunc
func Test_file_args() func Test_file_args()
let after = [ let after =<< trim [CODE]
\ 'call writefile(argv(), "Xtestout")', call writefile(argv(), "Xtestout")
\ 'qall', qall
\ ] [CODE]
if RunVim([], after, '') if RunVim([], after, '')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal(0, len(lines)) call assert_equal(0, len(lines))
@@ -487,10 +496,11 @@ func Test_startuptime()
endfunc endfunc
func Test_read_stdin() func Test_read_stdin()
let after = [ let after =<< trim [CODE]
\ 'write Xtestout', write Xtestout
\ 'quit!', quit!
\ ] [CODE]
if RunVimPiped([], after, '-', 'echo something | ') if RunVimPiped([], after, '-', 'echo something | ')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
" MS-Windows adds a space after the word " MS-Windows adds a space after the word
@@ -540,20 +550,22 @@ endfunc
func Test_zzz_startinsert() func Test_zzz_startinsert()
" Test :startinsert " Test :startinsert
call writefile(['123456'], 'Xtestout') call writefile(['123456'], 'Xtestout')
let after = [ let after =<< trim [CODE]
\ ':startinsert', :startinsert
\ 'call feedkeys("foobar\<c-o>:wq\<cr>","t")' call feedkeys("foobar\<c-o>:wq\<cr>","t")
\ ] [CODE]
if RunVim([], after, 'Xtestout') if RunVim([], after, 'Xtestout')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal(['foobar123456'], lines) call assert_equal(['foobar123456'], lines)
endif endif
" Test :startinsert! " Test :startinsert!
call writefile(['123456'], 'Xtestout') call writefile(['123456'], 'Xtestout')
let after = [ let after =<< trim [CODE]
\ ':startinsert!', :startinsert!
\ 'call feedkeys("foobar\<c-o>:wq\<cr>","t")' call feedkeys("foobar\<c-o>:wq\<cr>","t")
\ ] [CODE]
if RunVim([], after, 'Xtestout') if RunVim([], after, 'Xtestout')
let lines = readfile('Xtestout') let lines = readfile('Xtestout')
call assert_equal(['123456foobar'], lines) call assert_equal(['123456foobar'], lines)