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