1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 06:40:05 +08:00
SpaceVim/bundle/neomake/tests/statusline.vader
2020-06-13 14:06:35 +08:00

231 lines
11 KiB
Plaintext

Include: include/setup.vader
Execute (LoclistCounts):
call neomake#statusline#ResetCounts()
call neomake#statusline#ResetCountsForBuf(99)
call neomake#statusline#AddLoclistCount(99, {'type': 'E', 'bufnr': 99})
call neomake#statusline#AddLoclistCount(99, {'type': 'W', 'bufnr': 99})
AssertEqual neomake#statusline#LoclistCounts(), {}
" With 'buf ==# "all"' this matched 0.
AssertEqual neomake#statusline#LoclistCounts(0), {}
" 0 could refer to current buffer, but does not currently.
let curbufnr = bufnr('%')
call neomake#statusline#AddLoclistCount(curbufnr, {'type': 'E', 'bufnr': curbufnr})
AssertEqual neomake#statusline#LoclistCounts(0), {}
AssertEqual neomake#statusline#LoclistCounts(1), {}
AssertEqual neomake#statusline#LoclistCounts(99), {'E': 1, 'W': 1}
AssertEqual filter(neomake#statusline#LoclistCounts('all'), 'v:key == 99'),
\ {'99': {'E': 1, 'W': 1}}
Execute (neomake#statusline#ResetCounts):
call neomake#statusline#ResetCounts()
call neomake#statusline#AddLoclistCount(99, {'type': 'E', 'bufnr': 99})
call neomake#statusline#AddLoclistCount(99, {'type': 'W', 'bufnr': 99})
AssertEqual neomake#statusline#LoclistCounts('all'), {'99': {'E': 1, 'W': 1}}
call neomake#statusline#AddQflistCount({'type': 'S', 'bufnr': 99})
AssertEqual neomake#statusline#QflistCounts(), {'S': 1}
call neomake#statusline#ResetCounts()
AssertEqual neomake#statusline#LoclistCounts('all'), {}
AssertEqual neomake#statusline#QflistCounts(), {}
Execute (LoclistCounts returns number):
call g:NeomakeSetupAutocmdWrappers()
new
let bufnr = bufnr('%')
call neomake#statusline#AddLoclistCount(bufnr, {'type': 'E', 'bufnr': bufnr})
AssertEqual neomake#statusline#LoclistCounts(bufnr), {'E': 1}
AssertEqual [], g:neomake_test_countschanged
call neomake#statusline#ResetCountsForBuf(bufnr)
AssertEqual bufnr, g:neomake_test_countschanged[0].bufnr
call setbufvar(g:neomake_test_countschanged[0].bufnr, 'test', 1)
AssertEqual 1, getbufvar(g:neomake_test_countschanged[0].bufnr, 'test')
bwipe
Execute (LoclistCounts for wiped buffer should clean s:loclist_counts):
call g:NeomakeSetupAutocmdWrappers()
new
let bufnr = bufnr('%')
call neomake#statusline#AddLoclistCount(bufnr, {'type': 'E', 'bufnr': bufnr})
AssertEqual neomake#statusline#LoclistCounts(bufnr), {'E': 1}
bwipe
AssertEqual neomake#statusline#LoclistCounts(bufnr), {'E': 1}
AssertEqual [], g:neomake_test_countschanged
call neomake#statusline#ResetCounts()
AssertEqual bufnr, g:neomake_test_countschanged[0].bufnr
call setbufvar(g:neomake_test_countschanged[0].bufnr, 'test', 1)
AssertEqual '', getbufvar(g:neomake_test_countschanged[0].bufnr, 'test')
Execute (neomake#statusline#get_status):
Save g:neomake_verbose
let g:neomake_verbose = 3
call neomake#statusline#ResetCounts()
new
let bufnr = bufnr('')
AssertEqual neomake#statusline#get_status(bufnr, {}), '?'
AssertEqual neomake#statusline#get_status(bufnr, {'format_loclist_unknown': '{{running_job_names}}'}), ''
" {{running_jobs}} is only available with 'format_running' (internally).
AssertEqual neomake#statusline#get_status(bufnr, {'format_loclist_unknown': '{{running_jobs}}'}), '{{running_jobs}}'
AssertNeomakeMessage "Error when formatting '{{running_jobs}}': Unknown statusline format: {{running_jobs}}.", 0
call neomake#Make({'enabled_makers': [g:sleep_maker]})
if neomake#has_async_support()
AssertEqual neomake#statusline#get_status(bufnr, {}), '… (sleep-maker)'
AssertEqual neomake#statusline#get_status(bufnr, {'format_running': '...'}), '...'
AssertEqual neomake#statusline#get_status(bufnr, {'format_running': ''}), ''
" format_running=0 disables display of running state.
AssertEqual neomake#statusline#get_status(bufnr, {'format_running': 0}), '?'
AssertEqual neomake#statusline#get_status(bufnr, {'format_running': '{{running_job_names}}'}), 'sleep-maker'
Assert neomake#statusline#get_status(bufnr, {'format_running': '{{running_jobs}}'}) =~# '\m^{''', '{{running_jobs}} is replaced in format_running'
AssertEqual neomake#statusline#get_status(bufnr, {'format_lists': '{{quickfix}}'}), ''
AssertEqual neomake#statusline#get_status(bufnr, {'format_lists': '{{loclist}}'}), '… (sleep-maker)'
" lists_sep is ignored for single list.
AssertEqual neomake#statusline#get_status(bufnr, {'lists_sep': 'IGNORED'}), '… (sleep-maker)'
call neomake#statusline#get_status(bufnr(''), {'format_running': 'Neomake: {{does_not_exist}}'})
AssertNeomakeMessage "Error when formatting 'Neomake: {{does_not_exist}}': Unknown statusline format: {{does_not_exist}}.", 0
" Start project make.
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:sleep_maker]})
AssertEqual neomake#statusline#get_status(bufnr, {}), '… (sleep-maker) … (sleep-maker!)'
" Swapped default, no lists_sep.
AssertEqual neomake#statusline#get_status(bufnr, {'format_lists': '{{quickfix}} {{loclist}}'}), '… (sleep-maker!) … (sleep-maker)'
" Custom lists_sep.
AssertEqual neomake#statusline#get_status(bufnr, {'lists_sep': '//'}), '… (sleep-maker)//… (sleep-maker!)'
" Start project makers.
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:sleep_maker, g:sleep_maker]})
AssertEqual neomake#statusline#get_status(bufnr, {
\ 'running_jobs_separator': '_SEP_',
\ 'format_running_job_project': 'project:%s',
\ 'format_running_job_file': 'file:%s',
\ }), '… (file:sleep-maker) … (project:sleep-maker_SEP_project:sleep-maker)'
NeomakeTestsWaitForFinishedJobs
else
AssertEqual neomake#statusline#get_status(bufnr, {'format_running': '...'}), '%#NeomakeStatusGood#✓%#NeomakeStatReset#'
AssertEqual neomake#statusline#get_status(bufnr, {'format_loclist_ok': 'dandy!'}), 'dandy!'
AssertEqual neomake#statusline#get_status(bufnr, {'format_loclist_ok': '{{running_job_names}}'}), ''
" Start project makers.
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:sleep_maker, g:sleep_maker]})
endif
AssertNeomakeMessage '\v^Skipped 1 entries without bufnr:', 3
call neomake#statusline#get_status(bufnr(''), {'format_loclist_ok': 'Neomake: {{does_not_exist}}'})
AssertNeomakeMessage "Error when formatting 'Neomake: {{does_not_exist}}': Unknown statusline format: {{does_not_exist}}.", 0
call neomake#statusline#get_status(bufnr(''), {'format_loclist_ok': '{{foo}} {{bar}}'})
AssertNeomakeMessage "Errors when formatting '{{foo}} {{bar}}': Unknown statusline format: {{foo}}., Unknown statusline format: {{bar}}.", 0
" NOTE: warning is counted with quickfix list, but skipped with location list, because it has no bufnr.
let expected = '%#NeomakeStatusGood#✓%#NeomakeStatReset# %#NeomakeStatColorQuickfixTypeW# QW:2 %#NeomakeStatReset#'
AssertEqual neomake#statusline#get_status(bufnr, {}), expected
AssertEqual neomake#statusline#get(bufnr, {}), expected
call neomake#statusline#ResetCountsForBuf(bufnr)
let expected = '? %#NeomakeStatColorQuickfixTypeW# QW:2 %#NeomakeStatReset#'
AssertEqual neomake#statusline#get_status(bufnr, {}), expected
AssertEqual neomake#statusline#get(bufnr, {}), expected
call neomake#statusline#ResetCountsForProject()
AssertEqual neomake#statusline#get_status(bufnr, {}), '?'
AssertEqual neomake#statusline#get(bufnr, {}), '?'
CallNeomake 0, [g:success_maker]
AssertEqual neomake#statusline#get_status(bufnr, {'format_quickfix_ok': 'OK!'}), '? OK!'
bwipe
Execute (neomake#statusline#get: clears cache with new job (file mode)):
new
let bufnr = bufnr('%')
CallNeomake {'enabled_makers': [g:error_maker]}
AssertEqual neomake#statusline#get(bufnr), '%#NeomakeStatColorTypeE# E:1 %#NeomakeStatReset#'
call neomake#Make({'enabled_makers': [g:success_maker]})
if neomake#has_async_support()
AssertEqual neomake#statusline#get(bufnr), '… (success-maker)'
NeomakeTestsWaitForFinishedJobs
endif
AssertEqual neomake#statusline#get(bufnr), '%#NeomakeStatusGood#✓%#NeomakeStatReset#'
bwipe
Execute (neomake#statusline#get: clears cache with new job (project mode)):
new
let bufnr = bufnr('%')
CallNeomake {'file_mode': 0, 'enabled_makers': [g:error_maker]}
AssertEqual neomake#statusline#get(bufnr), '? %#NeomakeStatColorQuickfixTypeE# QE:1 %#NeomakeStatReset#'
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:true_maker]})
if neomake#has_async_support()
AssertEqual neomake#statusline#get(bufnr), '? … (true-maker!)'
endif
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:success_maker]})
if neomake#has_async_support()
AssertEqual neomake#statusline#get(bufnr), '? … (true-maker!, success-maker!)'
NeomakeTestsWaitForFinishedJobs
endif
" Unknown status, only project makers have been run.
AssertEqual neomake#statusline#get(bufnr), '?'
bwipe
Execute (neomake#statusline#get: clears cache with canceled job: keeps '?'):
if neomake#has_async_support()
new
let bufnr = bufnr('%')
call neomake#Make({'file_mode': 0, 'enabled_makers': [g:sleep_maker]})
AssertEqual neomake#statusline#get(bufnr), '? … (sleep-maker!)'
NeomakeCancelJobs
AssertEqual neomake#statusline#get(bufnr), '? … (sleep-maker!)'
NeomakeTestsWaitForFinishedJobs
AssertEqual neomake#statusline#get(bufnr), '?'
bwipe
else
NeomakeTestsSkip 'no async support.'
endif
Execute (neomake#statusline#get: disabling/enabling: clears cache):
new
let bufnr = bufnr('%')
AssertEqual neomake#statusline#get(bufnr), '?'
NeomakeDisableBuffer
AssertEqual neomake#statusline#get(bufnr), 'b- ?'
AssertNeomakeMessage "Using setting disabled=1 from 'buffer' (statusline#get).", 3, {'bufnr': bufnr}
NeomakeToggleBuffer
AssertEqual neomake#statusline#get(bufnr), '?'
CallNeomake 1, [g:true_maker]
AssertEqual neomake#statusline#get(bufnr), '%#NeomakeStatusGood#✓%#NeomakeStatReset#'
" no-op
NeomakeEnableBuffer
AssertEqual neomake#statusline#get(bufnr), '%#NeomakeStatusGood#✓%#NeomakeStatReset#'
bwipe
Execute (neomake#statusline#get: use_highlights_with_defaults):
new
let bufnr = bufnr('%')
AssertEqual neomake#statusline#get(bufnr, {'use_highlights_with_defaults': 0}), '?'
CallNeomake 1, [g:success_entry_maker]
AssertEqual neomake#statusline#get(bufnr, {'use_highlights_with_defaults': 0}), '✓'
AssertEqual neomake#statusline#get(bufnr, {'use_highlights_with_defaults': 1}),
\ '%#NeomakeStatusGood#✓%#NeomakeStatReset#'
bwipe
Execute (statusline: uses user-configured highlights):
new
let bufnr = bufnr('%')
hi NeomakeStatColorTypeW ctermfg=Black ctermbg=Black cterm=none
let orig = neomake#utils#redir('hi NeomakeStatColorTypeW')
CallNeomake 1, [g:success_entry_maker]
AssertEqual neomake#utils#redir('hi NeomakeStatColorTypeW'), orig
bwipe