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