1" Tests for 'makeencoding'.
2
3source shared.vim
4
5let s:python = PythonProg()
6if s:python == ''
7  " Can't run this test.
8  finish
9endif
10
11let s:script = 'test_makeencoding.py'
12
13let s:message_tbl = {
14      \ 'utf-8': 'ÀÈÌÒÙ こんにちは 你好',
15      \ 'latin1': 'ÀÈÌÒÙ',
16      \ 'cp932': 'こんにちは',
17      \ 'cp936': '你好',
18      \}
19
20
21" Tests for :cgetfile and :lgetfile.
22func Test_getfile()
23  set errorfile=Xerror.txt
24  set errorformat=%f(%l)\ :\ %m
25
26  " :cgetfile
27  for enc in keys(s:message_tbl)
28    let &makeencoding = enc
29    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
30    cgetfile
31    copen
32    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
33          \ getline('.'))
34    cclose
35  endfor
36
37  " :lgetfile
38  for enc in keys(s:message_tbl)
39    let &makeencoding = enc
40    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
41    lgetfile
42    lopen
43    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
44          \ getline('.'))
45    lclose
46  endfor
47
48  call delete(&errorfile)
49endfunc
50
51
52" Tests for :grep and :lgrep.
53func Test_grep()
54  let &grepprg = s:python
55  set grepformat=%f(%l)\ :\ %m
56
57  " :grep
58  for enc in keys(s:message_tbl)
59    let &makeencoding = enc
60    exec "silent grep! " . s:script . " " . enc
61    copen
62    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
63          \ getline('.'))
64    cclose
65  endfor
66
67  " :lgrep
68  for enc in keys(s:message_tbl)
69    let &makeencoding = enc
70    exec "silent lgrep! " . s:script . " " . enc
71    lopen
72    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
73          \ getline('.'))
74    lclose
75  endfor
76endfunc
77
78
79" Tests for :make and :lmake.
80func Test_make()
81  let &makeprg = s:python
82  set errorformat=%f(%l)\ :\ %m
83
84  " :make
85  for enc in keys(s:message_tbl)
86    let &makeencoding = enc
87    exec "silent make! " . s:script . " " . enc
88    copen
89    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
90          \ getline('.'))
91    cclose
92  endfor
93
94  " :lmake
95  for enc in keys(s:message_tbl)
96    let &makeencoding = enc
97    exec "silent lmake! " . s:script . " " . enc
98    lopen
99    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
100          \ getline('.'))
101    lclose
102  endfor
103endfunc
104