neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_makeencoding.vim (2997B)


      1 " Tests for 'makeencoding'.
      2 
      3 source shared.vim
      4 source check.vim
      5 
      6 CheckFeature quickfix
      7 let s:python = PythonProg()
      8 if s:python == ''
      9  throw 'Skipped: python program missing'
     10 endif
     11 
     12 let s:script = 'test_makeencoding.py'
     13 
     14 if has('iconv')
     15  let s:message_tbl = {
     16      \ 'utf-8': 'ÀÈÌÒÙ こんにちは 你好',
     17      \ 'latin1': 'ÀÈÌÒÙ',
     18      \ 'cp932': 'こんにちは',
     19      \ 'cp936': '你好',
     20      \}
     21 else
     22  let s:message_tbl = {
     23      \ 'utf-8': 'ÀÈÌÒÙ こんにちは 你好',
     24      \ 'latin1': 'ÀÈÌÒÙ',
     25      \}
     26 endif
     27 
     28 
     29 " Tests for :cgetfile and :lgetfile.
     30 func Test_getfile()
     31  set errorfile=Xerror.txt
     32  set errorformat=%f(%l)\ :\ %m
     33 
     34  " :cgetfile
     35  for enc in keys(s:message_tbl)
     36    let &makeencoding = enc
     37    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
     38    cgetfile
     39    copen
     40    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
     41          \ getline('.'))
     42    cclose
     43  endfor
     44 
     45  " :lgetfile
     46  for enc in keys(s:message_tbl)
     47    let &makeencoding = enc
     48    exec "silent !" . s:python . " " . s:script . " " . enc . " > " . &errorfile
     49    lgetfile
     50    lopen
     51    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
     52          \ getline('.'))
     53    lclose
     54  endfor
     55 
     56  call delete(&errorfile)
     57 endfunc
     58 
     59 
     60 " Tests for :grep and :lgrep.
     61 func Test_grep()
     62  let &grepprg = s:python
     63  set grepformat=%f(%l)\ :\ %m
     64 
     65  " :grep
     66  for enc in keys(s:message_tbl)
     67    let &makeencoding = enc
     68    exec "silent grep! " . s:script . " " . enc
     69    copen
     70    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
     71          \ getline('.'))
     72    cclose
     73  endfor
     74 
     75  " :lgrep
     76  for enc in keys(s:message_tbl)
     77    let &makeencoding = enc
     78    exec "silent lgrep! " . s:script . " " . enc
     79    lopen
     80    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
     81          \ getline('.'))
     82    lclose
     83  endfor
     84 endfunc
     85 
     86 
     87 " Tests for :make and :lmake.
     88 func Test_make()
     89  let &makeprg = s:python
     90  set errorformat=%f(%l)\ :\ %m
     91 
     92  " :make
     93  for enc in keys(s:message_tbl)
     94    let &makeencoding = enc
     95    exec "silent make! " . s:script . " " . enc
     96    copen
     97    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
     98          \ getline('.'))
     99    cclose
    100  endfor
    101 
    102  " :lmake
    103  for enc in keys(s:message_tbl)
    104    let &makeencoding = enc
    105    exec "silent lmake! " . s:script . " " . enc
    106    lopen
    107    call assert_equal("Xfoobar.c|10| " . s:message_tbl[enc] . " (" . enc . ")",
    108          \ getline('.'))
    109    lclose
    110  endfor
    111 endfunc
    112 
    113 " Test for an error file with a long line that needs an encoding conversion
    114 func Test_longline_conversion()
    115  new
    116  call setline(1, ['Xfile:10:' .. repeat("\xe0", 2000)])
    117  write ++enc=latin1 Xerr.out
    118  bw!
    119  set errorformat&
    120  set makeencoding=latin1
    121  cfile Xerr.out
    122  call assert_equal(repeat("\u00e0", 2000), getqflist()[0].text)
    123  call delete('Xerr.out')
    124  set makeencoding&
    125 endfunc
    126 
    127 " vim: shiftwidth=2 sts=2 expandtab