Mercurial > vim
view src/testdir/test_cdo.in @ 7111:57c354f0115c v7.4.867
commit https://github.com/vim/vim/commit/9534680731ea342c2fed01a812559958923480da
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 15 15:57:29 2015 +0200
patch 7.4.867
Problem: Can't build on MS-Windows. (Taro Muraoka)
Solution: Adjust #ifdef.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 15 Sep 2015 16:00:04 +0200 |
parents | 64e30831fa42 |
children | e88aee1842ba |
line wrap: on
line source
Tests for the :cdo, :cfdo, :ldo and :lfdo commands STARTTEST :so small.vim :if !has('quickfix') | e! test.ok | wq! test.out | endif :call writefile(["Line1", "Line2", "Line3"], 'Xtestfile1') :call writefile(["Line1", "Line2", "Line3"], 'Xtestfile2') :call writefile(["Line1", "Line2", "Line3"], 'Xtestfile3') :function RunTests(cchar) : let nl="\n" : enew : " Try with an empty list : exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Populate the list and then try : exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:3:1:Line3']" : exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Run command only on selected error lines : enew : exe "2,3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Boundary condition tests : enew : exe "1,1" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : enew : exe "3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Range test commands : enew : exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : enew : exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : enew : exe a:cchar . 'prev' : exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Invalid error lines test : enew : exe "27" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "4,5" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Run commands from an unsaved buffer : let v:errmsg='' : enew : setlocal modified : exe "2,2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : if v:errmsg =~# 'No write since last change' : let g:result .= 'Unsaved file change test passed' . nl : else : let g:result .= 'Unsaved file change test failed' . nl : endif : " If the executed command fails, then the operation should be aborted : enew! : let subst_count = 0 : exe a:cchar . "do s/Line/xLine/ | let subst_count += 1" : if subst_count == 1 && getline('.') == 'xLine1' : let g:result .= 'Abort command on error test passed' . nl : else : let g:result .= 'Abort command on error test failed' . nl : endif : exe "2,2" . a:cchar . "do! let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " List with no valid error entries : edit! +2 Xtestfile1 : exe a:cchar . "getexpr ['non-error 1', 'non-error 2', 'non-error 3']" : exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : let v:errmsg='' : exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : let g:result .= v:errmsg : " List with only one valid entry : exe a:cchar . "getexpr ['Xtestfile3:3:1:Line3']" : exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " Tests for :cfdo and :lfdo commands : exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'Xtestfile1:2:1:Line2', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:2:3:Line2', 'Xtestfile3:3:1:Line3']" : exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "2,3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "%" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe "1,$" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : exe a:cchar . 'pfile' : exe "." . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" : " List with only one valid entry : exe a:cchar . "getexpr ['Xtestfile2:2:5:Line2']" : exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl" :endfunction :let result='' :" Tests for the :cdo quickfix list command :call RunTests('c') :let result .= "\n" :" Tests for the :ldo location list command :call RunTests('l') :edit! test.out :0put =result :wq! ENDTEST