mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 17:40:06 +08:00
234 lines
7.3 KiB
Plaintext
234 lines
7.3 KiB
Plaintext
" Tests for the NeomakeInfo command.
|
|
Include: include/setup.vader
|
|
|
|
Execute (:NeomakeInfo output end to end test):
|
|
if !(exists('*execute') && has('nvim-0.2.0'))
|
|
NeomakeTestsSkip 'Only with execute() support'
|
|
else
|
|
let info = split(neomake#utils#redir('NeomakeInfo'), '\n')
|
|
Assert len(filter(copy(info), "v:val =~ '\\v^#+ Settings$'")), 'Settings header exists'
|
|
endif
|
|
|
|
Execute (:NeomakeInfo):
|
|
Save g:neomake_c_enabled_makers, g:neomaker_not_a_setting
|
|
let g:neomake_c_enabled_makers = ['doesnotexist']
|
|
let g:neomaker_not_a_setting = 1
|
|
Save &makeprg
|
|
let &makeprg = 'mycustom make %'
|
|
|
|
let info = neomake#debug#_get_info_lines()
|
|
Assert len(filter(copy(info), "v:val =~ '\\v^#+ Settings$'")), 'Settings header exists'
|
|
Assert index(info, "g:neomake_c_enabled_makers = ['doesnotexist']") != -1,
|
|
\ 'neomake_c_enabled_makers setting gets reported'
|
|
AssertEqual filter(copy(info), "v:val =~ 'neomaker'"), []
|
|
|
|
Assert len(filter(copy(info), 'v:val =~# "^makeprg=mycustom make %, Last set from"')) == 1,
|
|
\ 'Contains &makeprg: '.string(info)
|
|
|
|
Execute (:NeomakeInfo with FuncRef):
|
|
Save g:neomake_c_enabled_makers, g:neomake_c_doesnotexist_maker
|
|
new
|
|
set filetype=c
|
|
function! InitForJob(jobinfo) abort
|
|
endfunction
|
|
let g:neomake_c_enabled_makers = ['doesnotexist']
|
|
let g:neomake_c_doesnotexist_maker = {
|
|
\ 'InitForJob': function('InitForJob'),
|
|
\ 'errorformat': 'custom_efm: %m'}
|
|
|
|
let info = neomake#debug#_get_info_lines()
|
|
let idx = -1
|
|
for line in [
|
|
\ 'For the current filetype ("c", used with :Neomake):',
|
|
\ ' - doesnotexist',
|
|
\ ' - errorformat: ''custom_efm: %m''',
|
|
\ ' - exe: ''doesnotexist''']
|
|
let i = index(info, line)
|
|
Assert i > idx, 'line not found: "'.line.'" (idx: '.idx.')'."\n".join(info, "\n")
|
|
let idx = i
|
|
endfor
|
|
Assert len(map(info, 'v:val =~# " - InitForJob: function.*"')), 'InitForJob not found'
|
|
delfunction InitForJob
|
|
bwipe
|
|
|
|
Execute (:NeomakeInfo with unusual filetype):
|
|
new
|
|
set filetype=ft1.gentoo-package-keywords
|
|
let info = neomake#debug#_get_info_lines()
|
|
Assert index(info, 'NOTE: you can define g:neomake_ft1_gentoo_package_keywords_enabled_makers to configure it (or b:neomake_ft1_gentoo_package_keywords_enabled_makers).') != -1, 'Line was found'
|
|
bwipe
|
|
|
|
Execute (:NeomakeInfo displays issues):
|
|
Save g:neomake_enabled_makers, g:neomake_mymaker_maker
|
|
|
|
let g:neomake_enabled_makers = ['mymaker']
|
|
let g:neomake_mymaker_maker = {
|
|
\ 'exe': 'doesnotexist',
|
|
\ 'errorformat': 'custom_efm: %m',
|
|
\ 'mapexpr': '',
|
|
\ 'postprocess': function('tr'),
|
|
\ 'process_output': function('tr'),
|
|
\ }
|
|
|
|
let info = neomake#debug#_get_info_lines()
|
|
let idx = -1
|
|
for line in [
|
|
\ '#### Neomake debug information',
|
|
\ 'For the project (used with :Neomake!):',
|
|
\ ' - mymaker',
|
|
\ ' - errorformat: ''custom_efm: %m''',
|
|
\ ' - exe: ''doesnotexist''',
|
|
\ ' - ERRORS:',
|
|
\ " - maker's exe (doesnotexist) is not executable.",
|
|
\ ' - WARNINGS:',
|
|
\ ' - maker has mapexpr, but only process_output will be used.',
|
|
\ ' - maker has postprocess, but only process_output will be used.',
|
|
\ '#### :version',
|
|
\ '#### :messages',
|
|
\ ]
|
|
let i = index(info, line)
|
|
Assert i > idx, 'line not found: "'.line.'" (idx: '.idx.')'."\n".join(info, "\n")
|
|
let idx = i
|
|
endfor
|
|
|
|
Execute (NeomakeInfo! copies to clipboard):
|
|
try
|
|
let save_reg = getreg('+')
|
|
catch
|
|
NeomakeTestsSkip 'Clipboard is not available: '.v:exception
|
|
return
|
|
endtry
|
|
|
|
call NeomakeTestsSetVimMessagesMarker()
|
|
let restore = 1
|
|
try
|
|
NeomakeInfo!
|
|
let info = split(getreg('+'), '\n')
|
|
if empty(info)
|
|
let restore = 0
|
|
AssertNeomakeMessage "Could not set clipboard: Vim(call):E354: Invalid register name: '+'.", 0
|
|
return
|
|
endif
|
|
finally
|
|
if restore
|
|
call setreg('+', save_reg, 'l')
|
|
endif
|
|
endtry
|
|
let idx = -1
|
|
for line in [
|
|
\ '#### Neomake debug information',
|
|
\ '#### :version',
|
|
\ '#### :messages',
|
|
\ ]
|
|
let i = index(info, line)
|
|
Assert i > idx, 'line not found: "'.line.'" (idx: '.idx.')'."\n".join(info, "\n")
|
|
let idx = i
|
|
endfor
|
|
|
|
AssertEqual NeomakeTestsGetVimMessages(), [
|
|
\ 'Copied Neomake info to clipboard ("+).']
|
|
|
|
Execute (NeomakeInfo displays new-style config):
|
|
Assert !exists('g:neomake')
|
|
new
|
|
|
|
let info = neomake#debug#_get_info_lines()
|
|
let idx = -1
|
|
for line in [
|
|
\ '#### Neomake debug information',
|
|
\ '##### Settings',
|
|
\ '###### New-style (dict, overrides old-style)',
|
|
\ "g:neomake: unset",
|
|
\ 'b:neomake: unset',
|
|
\ ]
|
|
let i = index(info, line)
|
|
Assert i > idx, 'line not found: "'.line.'" (idx: '.idx.')'."\n".join(info, "\n")
|
|
let idx = i
|
|
endfor
|
|
|
|
" Using neomake#config#get() should not trigger setting g:neomake.
|
|
AssertEqual neomake#config#get('doesnotexist'), g:neomake#config#undefined
|
|
let b:neomake = {}
|
|
let info = neomake#debug#_get_info_lines()
|
|
let idx = -1
|
|
for line in [
|
|
\ '#### Neomake debug information',
|
|
\ '##### Settings',
|
|
\ '###### New-style (dict, overrides old-style)',
|
|
\ "g:neomake: unset",
|
|
\ 'b:neomake: {}',
|
|
\ ]
|
|
let i = index(info, line)
|
|
Assert i > idx, 'line not found: "'.line.'" (idx: '.idx.')'."\n".join(info, "\n")
|
|
let idx = i
|
|
endfor
|
|
bwipe
|
|
|
|
Execute (NeomakeInfo does not display message for filetype with no makers):
|
|
new
|
|
noautocmd set filetype=doesnotexist
|
|
|
|
call NeomakeTestsSetVimMessagesMarker()
|
|
let info = neomake#debug#_get_info_lines()
|
|
let msgs = NeomakeTestsGetVimMessages()
|
|
bwipe
|
|
|
|
AssertEqual msgs, []
|
|
Assert index(info, 'For the current filetype ("doesnotexist", used with :Neomake):') > 0
|
|
|
|
Execute (NeomakeInfo with maker name):
|
|
" NOTE: Vim needs non-empty PATH for executable to be false!
|
|
" (https://github.com/vim/vim/pull/3283)
|
|
call g:NeomakeTestsSetPATH('/doesnotexist')
|
|
Assert !executable('make')
|
|
|
|
new
|
|
noautocmd set filetype=neomake_tests
|
|
NeomakeInfo foo
|
|
AssertNeomakeMessage 'Maker not found: foo.', 0
|
|
|
|
call NeomakeTestsSetVimMessagesMarker()
|
|
NeomakeInfo makeprg
|
|
AssertEqual NeomakeTestsGetVimMessages(), []
|
|
AssertEqual neomake#debug#get_maker_info('maker_with_nonstring_exe')[-2:], [
|
|
\ ' - ERRORS:',
|
|
\ " - Non-string given for executable of maker maker_with_nonstring_exe: type 2.",
|
|
\ ]
|
|
|
|
call NeomakeTestsSetVimMessagesMarker()
|
|
NeomakeInfo makeprg
|
|
AssertEqual NeomakeTestsGetVimMessages(), []
|
|
AssertEqual neomake#debug#get_maker_info('makeprg')[-2:], [
|
|
\ ' - ERRORS:',
|
|
\ " - maker's exe (make) is not executable.",
|
|
\ ]
|
|
|
|
Save &makeprg
|
|
set makeprg=custommakeprg
|
|
NeomakeInfo makeprg
|
|
AssertEqual NeomakeTestsGetVimMessages(), []
|
|
AssertEqual neomake#debug#get_maker_info('makeprg')[-2:], [
|
|
\ ' - ERRORS:',
|
|
\ " - maker's exe (custommakeprg) is not executable.",
|
|
\ ]
|
|
|
|
" Uses &shell when checking executable for makeprg with spaces.
|
|
Save &shell
|
|
set shell=customshell
|
|
set makeprg=custom\ make\ prg
|
|
NeomakeInfo makeprg
|
|
AssertEqual NeomakeTestsGetVimMessages(), []
|
|
AssertEqual neomake#debug#get_maker_info('makeprg')[-2:], [
|
|
\ ' - ERRORS:',
|
|
\ " - maker's exe (customshell) is not executable.",
|
|
\ ]
|
|
|
|
let b:neomake_makeprg_exe = 'custom_exe'
|
|
NeomakeInfo makeprg
|
|
AssertEqual NeomakeTestsGetVimMessages(), []
|
|
AssertEqual neomake#debug#get_maker_info('makeprg')[-2:], [
|
|
\ ' - ERRORS:',
|
|
\ " - maker's exe (custom_exe) is not executable.",
|
|
\ ]
|
|
bwipe
|