diff src/testdir/test_quickfix.vim @ 8649:ec78ecf15de7 v7.4.1614

commit https://github.com/vim/vim/commit/7eba3d2cbf19e731dc51652bc26099cc253d538a Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 19 22:54:09 2016 +0100 patch 7.4.1614 Problem: Still quickfix test in old style. Solution: Turn test 10 into a new style test.
author Christian Brabandt <cb@256bit.org>
date Sat, 19 Mar 2016 23:00:05 +0100
parents 536b9b88d1ca
children 39d6e4f2f748
line wrap: on
line diff
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -4,6 +4,8 @@ if !has('quickfix')
   finish
 endif
 
+set encoding=utf-8
+
 " Tests for the :clist and :llist commands
 function XlistTests(cchar)
   let Xlist = a:cchar . 'list'
@@ -514,3 +516,124 @@ function Test_locationlist_curwin_was_cl
 
     augroup! testgroup
 endfunction
+
+" More tests for 'errorformat'
+function! Test_efm1()
+    if !has('unix')
+	" The 'errorformat' setting is different on non-Unix systems.
+	" This test works only on Unix-like systems.
+	return
+    endif
+
+    let l = [
+      \ '"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.',
+      \ '"Xtestfile", line 6 col 19; this is an error',
+      \ 'gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c',
+      \ 'Xtestfile:9: parse error before `asd''',
+      \ 'make: *** [vim] Error 1',
+      \ 'in file "Xtestfile" linenr 10: there is an error',
+      \ '',
+      \ '2 returned',
+      \ '"Xtestfile", line 11 col 1; this is an error',
+      \ '"Xtestfile", line 12 col 2; this is another error',
+      \ '"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", linenr 16: yet another problem',
+      \ 'Error in "Xtestfile" at line 17:',
+      \ 'x should be a dot',
+      \ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17',
+      \ '            ^',
+      \ 'Error in "Xtestfile" at line 18:',
+      \ 'x should be a dot',
+      \ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18',
+      \ '.............^',
+      \ 'Error in "Xtestfile" at line 19:',
+      \ 'x should be a dot',
+      \ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19',
+      \ '--------------^',
+      \ 'Error in "Xtestfile" at line 20:',
+      \ 'x should be a dot',
+      \ '	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?',
+      \ '"Xtestfile", line 22 col 9: What is the title of the quickfix window?'
+      \ ]
+
+    call writefile(l, 'Xerrorfile1')
+    call writefile(l[:-2], 'Xerrorfile2')
+
+    let m = [
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  4',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  6',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  9',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 10',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 14',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 15',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 21',
+	\ '	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22'
+	\ ]
+    call writefile(m, 'Xtestfile')
+
+    let save_efm = &efm
+    set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m
+    set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m
+
+    exe 'cf Xerrorfile2'
+    clast
+    copen
+    call assert_equal(':cf Xerrorfile2', w:quickfix_title)
+    wincmd p
+
+    exe 'cf Xerrorfile1'
+    call assert_equal([4, 12], [line('.'), col('.')])
+    cn
+    call assert_equal([6, 19], [line('.'), col('.')])
+    cn
+    call assert_equal([9, 2], [line('.'), col('.')])
+    cn
+    call assert_equal([10, 2], [line('.'), col('.')])
+    cn
+    call assert_equal([11, 1], [line('.'), col('.')])
+    cn
+    call assert_equal([12, 2], [line('.'), col('.')])
+    cn
+    call assert_equal([14, 10], [line('.'), col('.')])
+    cn
+    call assert_equal([15, 3, 10], [line('.'), col('.'), virtcol('.')])
+    cn
+    call assert_equal([16, 2], [line('.'), col('.')])
+    cn
+    call assert_equal([17, 6], [line('.'), col('.')])
+    cn
+    call assert_equal([18, 7], [line('.'), col('.')])
+    cn
+    call assert_equal([19, 8], [line('.'), col('.')])
+    cn
+    call assert_equal([20, 9], [line('.'), col('.')])
+    clast
+    cprev
+    cprev
+    wincmd w
+    call assert_equal(':cf Xerrorfile1', w:quickfix_title)
+    wincmd p
+
+    let &efm = save_efm
+    call delete('Xerrorfile1')
+    call delete('Xerrorfile2')
+    call delete('Xtestfile')
+endfunction