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