110561fe0SBram Moolenaar" Test the :compiler command 210561fe0SBram Moolenaar 35a4c3082SBram Moolenaarsource check.vim 416531558SBram Moolenaarsource shared.vim 55a4c3082SBram Moolenaar 610561fe0SBram Moolenaarfunc Test_compiler() 7aeb313f3SBram Moolenaar CheckExecutable perl 85a4c3082SBram Moolenaar CheckFeature quickfix 910561fe0SBram Moolenaar 10f0447e89SBram Moolenaar " $LANG changes the output of Perl. 11f0447e89SBram Moolenaar if $LANG != '' 12f0447e89SBram Moolenaar unlet $LANG 13f0447e89SBram Moolenaar endif 14f0447e89SBram Moolenaar 15dff2adc8SBram Moolenaar " %:S does not work properly with 'shellslash' set 16dff2adc8SBram Moolenaar let save_shellslash = &shellslash 17dff2adc8SBram Moolenaar set noshellslash 18dff2adc8SBram Moolenaar 1910561fe0SBram Moolenaar e Xfoo.pl 2010561fe0SBram Moolenaar compiler perl 2110561fe0SBram Moolenaar call assert_equal('perl', b:current_compiler) 2210561fe0SBram Moolenaar call assert_fails('let g:current_compiler', 'E121:') 2310561fe0SBram Moolenaar 2458ef8a31SBram Moolenaar let verbose_efm = execute('verbose set efm') 25*0a15c767SBram Moolenaar call assert_match('Last set from .*[/\\]compiler[/\\]perl.vim ', verbose_efm) 2658ef8a31SBram Moolenaar 2710561fe0SBram Moolenaar call setline(1, ['#!/usr/bin/perl -w', 'use strict;', 'my $foo=1']) 2810561fe0SBram Moolenaar w! 2910561fe0SBram Moolenaar call feedkeys(":make\<CR>\<CR>", 'tx') 3010561fe0SBram Moolenaar call assert_fails('clist', 'E42:') 3110561fe0SBram Moolenaar 3210561fe0SBram Moolenaar call setline(1, ['#!/usr/bin/perl -w', 'use strict;', '$foo=1']) 3310561fe0SBram Moolenaar w! 3410561fe0SBram Moolenaar call feedkeys(":make\<CR>\<CR>", 'tx') 3510561fe0SBram Moolenaar let a=execute('clist') 36cebfcffaSBram Moolenaar call assert_match('\n \d\+ Xfoo.pl:3: Global symbol "$foo" ' 37cebfcffaSBram Moolenaar \ . 'requires explicit package name', a) 38cebfcffaSBram Moolenaar 3910561fe0SBram Moolenaar 40dff2adc8SBram Moolenaar let &shellslash = save_shellslash 4110561fe0SBram Moolenaar call delete('Xfoo.pl') 4210561fe0SBram Moolenaar bw! 4310561fe0SBram Moolenaarendfunc 4410561fe0SBram Moolenaar 4560bc8e72SBram Moolenaarfunc GetCompilerNames() 4660bc8e72SBram Moolenaar return glob('$VIMRUNTIME/compiler/*.vim', 0, 1) 47142f2354SBram Moolenaar \ ->map({i, v -> substitute(v, '.*[\\/]\([a-zA-Z0-9_\-]*\).vim', '\1', '')}) 48142f2354SBram Moolenaar \ ->sort() 4960bc8e72SBram Moolenaarendfunc 5060bc8e72SBram Moolenaar 5110561fe0SBram Moolenaarfunc Test_compiler_without_arg() 52c25e702dSBram Moolenaar let runtime = substitute($VIMRUNTIME, '\\', '/', 'g') 5310561fe0SBram Moolenaar let a = split(execute('compiler')) 5460bc8e72SBram Moolenaar let exp = GetCompilerNames() 5560bc8e72SBram Moolenaar call assert_match(runtime .. '/compiler/' .. exp[0] .. '.vim$', a[0]) 5660bc8e72SBram Moolenaar call assert_match(runtime .. '/compiler/' .. exp[1] .. '.vim$', a[1]) 5760bc8e72SBram Moolenaar call assert_match(runtime .. '/compiler/' .. exp[-1] .. '.vim$', a[-1]) 5810561fe0SBram Moolenaarendfunc 5910561fe0SBram Moolenaar 6016531558SBram Moolenaar" Test executing :compiler from the command line, not from a script 6116531558SBram Moolenaarfunc Test_compiler_commandline() 6216531558SBram Moolenaar call system(GetVimCommandClean() .. ' --not-a-term -c "compiler gcc" -c "call writefile([b:current_compiler], ''XcompilerOut'')" -c "quit"') 6316531558SBram Moolenaar call assert_equal(0, v:shell_error) 6416531558SBram Moolenaar call assert_equal(["gcc"], readfile('XcompilerOut')) 6516531558SBram Moolenaar 6616531558SBram Moolenaar call delete('XcompilerOut') 6716531558SBram Moolenaarendfunc 6816531558SBram Moolenaar 6910561fe0SBram Moolenaarfunc Test_compiler_completion() 7060bc8e72SBram Moolenaar let clist = GetCompilerNames()->join(' ') 7110561fe0SBram Moolenaar call feedkeys(":compiler \<C-A>\<C-B>\"\<CR>", 'tx') 7260bc8e72SBram Moolenaar call assert_match('^"compiler ' .. clist .. '$', @:) 7310561fe0SBram Moolenaar 7410561fe0SBram Moolenaar call feedkeys(":compiler p\<C-A>\<C-B>\"\<CR>", 'tx') 75c17ba791SBram Moolenaar call assert_match('"compiler pbx perl\( p[a-z]\+\)\+ pylint pyunit', @:) 7610561fe0SBram Moolenaar 7710561fe0SBram Moolenaar call feedkeys(":compiler! p\<C-A>\<C-B>\"\<CR>", 'tx') 78c17ba791SBram Moolenaar call assert_match('"compiler! pbx perl\( p[a-z]\+\)\+ pylint pyunit', @:) 7910561fe0SBram Moolenaarendfunc 8010561fe0SBram Moolenaar 8110561fe0SBram Moolenaarfunc Test_compiler_error() 82e20b9eceSBram Moolenaar let g:current_compiler = 'abc' 8310561fe0SBram Moolenaar call assert_fails('compiler doesnotexist', 'E666:') 84e20b9eceSBram Moolenaar call assert_equal('abc', g:current_compiler) 85e20b9eceSBram Moolenaar call assert_fails('compiler! doesnotexist', 'E666:') 86e20b9eceSBram Moolenaar unlet! g:current_compiler 8710561fe0SBram Moolenaarendfunc 886d91bcb4SBram Moolenaar 896d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 90