blob: a3d5538a47efbbf20802fbcda02a359b62ff908f [file] [log] [blame]
Bram Moolenaar2c7292d2017-03-05 17:43:31 +01001" 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