12c7292dcSBram Moolenaar" Tests for 'makeencoding'.
22c7292dcSBram Moolenaar
32c7292dcSBram Moolenaarsource shared.vim
42c7292dcSBram Moolenaar
52c7292dcSBram Moolenaarlet s:python = PythonProg()
62c7292dcSBram Moolenaarif s:python == ''
7*b46fecd3SBram Moolenaar  throw 'Skipped: python program missing'
82c7292dcSBram Moolenaarendif
92c7292dcSBram Moolenaar
102c7292dcSBram Moolenaarlet s:script = 'test_makeencoding.py'
112c7292dcSBram Moolenaar
122c7292dcSBram Moolenaarlet s:message_tbl = {
132c7292dcSBram Moolenaar      \ 'utf-8': 'ÀÈÌÒÙ こんにちは 你好',
142c7292dcSBram Moolenaar      \ 'latin1': 'ÀÈÌÒÙ',
152c7292dcSBram Moolenaar      \ 'cp932': 'こんにちは',
162c7292dcSBram Moolenaar      \ 'cp936': '你好',
172c7292dcSBram Moolenaar      \}
182c7292dcSBram Moolenaar
192c7292dcSBram Moolenaar
202c7292dcSBram Moolenaar" Tests for :cgetfile and :lgetfile.
212c7292dcSBram Moolenaarfunc Test_getfile()
222c7292dcSBram Moolenaar  set errorfile=Xerror.txt
232c7292dcSBram Moolenaar  set errorformat=%f(%l)\ :\ %m
242c7292dcSBram Moolenaar
252c7292dcSBram Moolenaar  " :cgetfile
262c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
272c7292dcSBram Moolenaar    let &makeencoding = enc
282c7292dcSBram Moolenaar    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
292c7292dcSBram Moolenaar    cgetfile
302c7292dcSBram Moolenaar    copen
312c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
322c7292dcSBram Moolenaar          \ getline('.'))
332c7292dcSBram Moolenaar    cclose
342c7292dcSBram Moolenaar  endfor
352c7292dcSBram Moolenaar
362c7292dcSBram Moolenaar  " :lgetfile
372c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
382c7292dcSBram Moolenaar    let &makeencoding = enc
392c7292dcSBram Moolenaar    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
402c7292dcSBram Moolenaar    lgetfile
412c7292dcSBram Moolenaar    lopen
422c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
432c7292dcSBram Moolenaar          \ getline('.'))
442c7292dcSBram Moolenaar    lclose
452c7292dcSBram Moolenaar  endfor
462c7292dcSBram Moolenaar
472c7292dcSBram Moolenaar  call delete(&errorfile)
482c7292dcSBram Moolenaarendfunc
492c7292dcSBram Moolenaar
502c7292dcSBram Moolenaar
512c7292dcSBram Moolenaar" Tests for :grep and :lgrep.
522c7292dcSBram Moolenaarfunc Test_grep()
532c7292dcSBram Moolenaar  let &grepprg = s:python
542c7292dcSBram Moolenaar  set grepformat=%f(%l)\ :\ %m
552c7292dcSBram Moolenaar
562c7292dcSBram Moolenaar  " :grep
572c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
582c7292dcSBram Moolenaar    let &makeencoding = enc
592c7292dcSBram Moolenaar    exec "silent grep! " . s:script . " " . enc
602c7292dcSBram Moolenaar    copen
612c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
622c7292dcSBram Moolenaar          \ getline('.'))
632c7292dcSBram Moolenaar    cclose
642c7292dcSBram Moolenaar  endfor
652c7292dcSBram Moolenaar
662c7292dcSBram Moolenaar  " :lgrep
672c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
682c7292dcSBram Moolenaar    let &makeencoding = enc
692c7292dcSBram Moolenaar    exec "silent lgrep! " . s:script . " " . enc
702c7292dcSBram Moolenaar    lopen
712c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
722c7292dcSBram Moolenaar          \ getline('.'))
732c7292dcSBram Moolenaar    lclose
742c7292dcSBram Moolenaar  endfor
752c7292dcSBram Moolenaarendfunc
762c7292dcSBram Moolenaar
772c7292dcSBram Moolenaar
782c7292dcSBram Moolenaar" Tests for :make and :lmake.
792c7292dcSBram Moolenaarfunc Test_make()
802c7292dcSBram Moolenaar  let &makeprg = s:python
812c7292dcSBram Moolenaar  set errorformat=%f(%l)\ :\ %m
822c7292dcSBram Moolenaar
832c7292dcSBram Moolenaar  " :make
842c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
852c7292dcSBram Moolenaar    let &makeencoding = enc
862c7292dcSBram Moolenaar    exec "silent make! " . s:script . " " . enc
872c7292dcSBram Moolenaar    copen
882c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
892c7292dcSBram Moolenaar          \ getline('.'))
902c7292dcSBram Moolenaar    cclose
912c7292dcSBram Moolenaar  endfor
922c7292dcSBram Moolenaar
932c7292dcSBram Moolenaar  " :lmake
942c7292dcSBram Moolenaar  for enc in keys(s:message_tbl)
952c7292dcSBram Moolenaar    let &makeencoding = enc
962c7292dcSBram Moolenaar    exec "silent lmake! " . s:script . " " . enc
972c7292dcSBram Moolenaar    lopen
982c7292dcSBram Moolenaar    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
992c7292dcSBram Moolenaar          \ getline('.'))
1002c7292dcSBram Moolenaar    lclose
1012c7292dcSBram Moolenaar  endfor
1022c7292dcSBram Moolenaarendfunc
103