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

408 lines
14 KiB
Plaintext
Vendored

Include: include/setup.vader
Execute (stdin maker):
let maker = {'exe': 'cat', 'supports_stdin': 1, 'errorformat': '%f:%m'}
new
" Stdin should be used also when tempfiles are disabled.
let b:neomake_tempfile_enabled = 0
normal! ifile1.test:line1
normal! ofile1.test:line2
call neomake#Make(1, [maker])
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: cat -.", 2
NeomakeTestsWaitForFinishedJobs
endif
AssertNeomakeMessage 'cwd: '.getcwd().'.', 3
AssertNeomakeMessage '\moutput on stdout: [''file1.test:line1.*'
AssertNeomakeMessage '\vUsed bufnr from stdin buffer (\d+) \(file1.test\) for 2 entries: 1, 2.'
let tempbuf = g:neomake_test_matchlist[1]
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
AssertNeomakeMessage "Wiping out 1 unlisted/remapped buffers: ['".tempbuf."']."
bwipe!
Execute (stdin maker (args as string)):
let maker = {'exe': 'cat', 'args': '', 'supports_stdin': 1, 'errorformat': '%f:%m'}
new
" Stdin should be used also when tempfiles are disabled.
let b:neomake_tempfile_enabled = 0
normal! ifile1.test:line1
normal! ofile1.test:line2
call neomake#Make(1, [maker])
if neomake#has_async_support()
if has('nvim')
AssertNeomakeMessage "Starting async job [string]: cat -.", 2
else
let shell_argv = join(split(&shell) + split(&shellcmdflag))
AssertNeomakeMessage 'Starting async job: '.shell_argv." 'cat -'.", 2
endif
NeomakeTestsWaitForFinishedJobs
endif
AssertNeomakeMessage '\moutput on stdout: [''file1.test:line1.*'
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (stdin maker (disabled tempfiles)):
let maker = {'exe': 'cat', 'supports_stdin': 1, 'tempfile_name': '-'}
new
" Stdin should be used also when tempfiles are disabled.
let b:neomake_tempfile_enabled = 0
normal! iline1
normal! oline2
call neomake#Make(1, [maker])
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: cat -.", 2
NeomakeTestsWaitForFinishedJobs
else
AssertNeomakeMessage 'Starting [string]: cat -.', 2
endif
AssertNeomakeMessage '\moutput on stdout: [''line1.*'
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (stdin maker (project mode: append_file)):
let maker = {'exe': 'cat', 'supports_stdin': 1, 'tempfile_name': '-',
\ 'append_file': 1}
new
" Stdin should be used also when tempfiles are disabled.
let b:neomake_tempfile_enabled = 0
normal! iline1
normal! oline2
call neomake#Make(0, [maker])
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: cat -.", 2
NeomakeTestsWaitForFinishedJobs
else
AssertNeomakeMessage 'Starting [string]: cat -.', 2
endif
AssertNeomakeMessage '\moutput on stdout: [''line1.*'
AssertEqual map(getqflist(), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (stdin maker (project mode: uses_filename)):
let maker = {'exe': 'cat', 'args': '$NEOMAKE_FILE', 'supports_stdin': 1,
\ 'uses_filename': 1}
new
" Stdin should be used also when tempfiles are disabled.
let b:neomake_tempfile_enabled = 0
normal! iline1
normal! oline2
call neomake#Make(0, [maker])
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
if neomake#has_async_support()
if has('nvim')
AssertNeomakeMessage "Starting async job [string]: cat $NEOMAKE_FILE.", 2
else
let shell_argv = join(split(&shell) + split(&shellcmdflag))
AssertNeomakeMessage 'Starting async job: '.shell_argv." 'cat $NEOMAKE_FILE'.", 2
endif
NeomakeTestsWaitForFinishedJobs
else
AssertNeomakeMessage 'Starting [string]: cat $NEOMAKE_FILE.', 2
endif
AssertNeomakeMessage '\moutput on stdout: [''line1.*'
AssertEqual map(getqflist(), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (stdin maker: supports_stdin can be a callback adding args):
let maker = {'exe': 'printf', 'args': ['%s\n']}
function maker.supports_stdin(jobinfo)
let self.args += ['added_arg']
return 1
endfunction
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
AssertEqual map(getloclist(0), 'v:val.text'), ['added_arg', '-']
bwipe
Execute (stdin maker: supports_stdin can be a callback adding args (maker from command string)):
let maker = neomake#utils#MakerFromCommand('printf "%s\n"')
function maker.supports_stdin(jobinfo)
AssertEqual self.__command_is_string, 1
let self.args[-1] .= ' added_arg'
return 1
endfunction
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
AssertEqual map(getloclist(0), 'v:val.text'), ['added_arg', '-']
bwipe
Execute (stdin maker: supports_stdin can be a callback adding args (maker from command list)):
let maker = neomake#utils#MakerFromCommand(['printf', '%s\n'])
function maker.supports_stdin(jobinfo)
AssertEqual self.__command_is_string, 0
let self.args += ['added_arg']
return 1
endfunction
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
AssertEqual map(getloclist(0), 'v:val.text'), ['added_arg', '-']
bwipe
Execute (stdin maker: supports_stdin can be a callback adding args, and setting tempfile_name):
let maker = {'exe': 'printf', 'args': ['%s\n']}
function maker.supports_stdin(jobinfo)
let self.args += ['added_arg', '%:p']
let self.tempfile_name = 'custom_tempfile'
return 1
endfunction
let fname = tempname()
new
exe 'file '.fname
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using stdin for unreadable buffer (custom_tempfile).'
AssertEqual map(getloclist(0), 'v:val.text'), ['added_arg', fname, 'custom_tempfile']
bwipe
Execute (stdin maker: supports_stdin can be a callback returning 0):
let maker = {'exe': 'printf', 'args': ['%s\n']}
function maker.supports_stdin(jobinfo)
return 0
endfunction
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage '\v^Using tempfile for unnamed buffer: "(.*)".$'
let tempfile_name = g:neomake_test_matchlist[1]
AssertEqual map(getloclist(0), 'v:val.text'), [tempfile_name]
bwipe
Execute (stdin maker: supports_stdin can be a callback returning 0 and change args):
let maker = {'exe': 'printf', 'args': ['%s\n']}
function maker.supports_stdin(jobinfo)
let self.args += ['added_arg']
return 0
endfunction
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage '\v^Using tempfile for unnamed buffer: "(.*)".$'
let tempfile_name = g:neomake_test_matchlist[1]
AssertEqual map(getloclist(0), 'v:val.text'), ['added_arg', tempfile_name]
bwipe
Execute (stdin maker: uses neomake#utils#get_buffer_lines for buffer_lines):
let maker = {'exe': 'cat', 'supports_stdin': 1}
new
set buftype=nofile
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).'
AssertEqual map(getloclist(0), 'v:val.text'), []
normal! o
CallNeomake 1, [maker]
AssertEqual map(getloclist(0), 'v:val.text'), ['', '']
bwipe
Execute (stdin maker: does not use buffer's cwd by default):
let maker = {'exe': 'true', 'supports_stdin': 1}
let fname = tempname()
new
exe 'file '.fname
CallNeomake 1, [maker]
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
CallNeomake 0, [extend(copy(maker), {'uses_filename': 1})]
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
let maker.cwd = '.'
CallNeomake 1, [maker]
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
bwipe
Execute (stdin maker: can use buffer's cwd):
let maker = {'exe': 'cat', 'name': 'flake8'}
function maker.supports_stdin(jobinfo) abort
call a:jobinfo.cd('%:h')
return 1
endfunction
let fname = tempname()
new
exe 'file '.fname
let orig_cwd = getcwd()
CallNeomake 1, [maker]
AssertNeomakeMessage printf('cwd: %s (changed).', fnamemodify(fname, ':h')), 3
AssertEqual orig_cwd, getcwd()
CallNeomake 0, [extend(copy(maker), {'uses_filename': 1})]
AssertNeomakeMessage printf('cwd: %s (changed).', fnamemodify(fname, ':h')), 3
" Can be set using config (absolute).
let b:neomake_flake8_cwd = orig_cwd
CallNeomake 1, [maker]
AssertNeomakeMessage printf('jobinfo.cd(): keeping cwd from setting: %s.', string(orig_cwd))
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
" Can be set using config (relative).
let b:neomake_flake8_cwd = '.'
CallNeomake 1, [maker]
AssertNeomakeMessage "jobinfo.cd(): keeping cwd from setting: '.'."
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
" Overridden by conf.
let maker.cwd = '..'
CallNeomake 1, [maker]
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
unlet b:neomake_flake8_cwd
let maker.cwd = '.'
CallNeomake 1, [maker]
AssertNeomakeMessage printf('cwd: %s.', getcwd()), 3
bwipe
Execute (stdin maker: can always use stdin):
let maker = {
\ 'name': 'stdin_maker',
\ 'exe': 'cat',
\ 'uses_stdin': 1,
\ 'errorformat': '%f:%m'}
new
call setline(1, ['file1.test:line1', 'file1.test:line2'])
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (1) from setting.', 3
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: cat -.", 2
NeomakeTestsWaitForFinishedJobs
endif
AssertNeomakeMessage 'cwd: '.getcwd().'.', 3
AssertNeomakeMessage '\moutput on stdout: [''file1.test:line1.*'
AssertNeomakeMessage '\vUsed bufnr from stdin buffer (\d+) \(file1.test\) for 2 entries: 1, 2.'
let tempbuf = g:neomake_test_matchlist[1]
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
AssertNeomakeMessage "Wiping out 1 unlisted/remapped buffers: ['".tempbuf."']."
" uses_stdin can be changed via settings.
call neomake#config#set('b:uses_stdin', 0)
call neomake#config#set('b:stdin_maker.exe', 'true')
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (0) from setting.', 3
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: true.", 2
else
AssertNeomakeMessage "Starting [string]: true.", 2
endif
AssertEqual map(getloclist(0), 'v:val.text'), []
" tempfile_name can be changed via settings.
" NOTE: vim81 fails with "Vim(call):E631: ch_sendraw(): write failed" if the
" process does not have stdin open.
call neomake#config#set('b:uses_stdin', 1)
call neomake#config#set('b:tempfile_name', '-')
call neomake#config#set('b:stdin_maker.exe', 'cat')
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (1) from setting.', 3
AssertNeomakeMessage "Using setting tempfile_name='-' from 'buffer'.", 3
if neomake#has_async_support()
AssertNeomakeMessage 'Starting async job: cat -.', 2
else
AssertNeomakeMessage "Starting [string]: cat -.", 2
endif
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (stdin maker: can always use stdin (append_file=0, not setting uses_filename)):
let maker = {
\ 'name': 'stdin_maker',
\ 'exe': 'cat',
\ 'args': ['-'],
\ 'uses_stdin': 1,
\ 'append_file': 0,
\ 'errorformat': '%f:%m'}
new
call setline(1, ['file1.test:line1', 'file1.test:line2'])
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (1) from setting.', 3
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: cat -.", 2
NeomakeTestsWaitForFinishedJobs
endif
AssertNeomakeMessage 'cwd: '.getcwd().'.', 3
AssertNeomakeMessage '\moutput on stdout: [''file1.test:line1.*'
AssertNeomakeMessage '\vUsed bufnr from stdin buffer (\d+) \(file1.test\) for 2 entries: 1, 2.'
let tempbuf = g:neomake_test_matchlist[1]
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
AssertNeomakeMessage "Wiping out 1 unlisted/remapped buffers: ['".tempbuf."']."
" uses_stdin can be changed via settings.
call neomake#config#set('b:uses_stdin', 0)
call neomake#config#set('b:stdin_maker.exe', 'true')
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (0) from setting.', 3
if neomake#has_async_support()
AssertNeomakeMessage "Starting async job: true -.", 2
else
AssertNeomakeMessage "Starting [string]: true -.", 2
endif
AssertEqual map(getloclist(0), 'v:val.text'), []
" tempfile_name can be changed via settings.
" NOTE: vim81 fails with "Vim(call):E631: ch_sendraw(): write failed" if the
" process does not have stdin open.
call neomake#config#set('b:uses_stdin', 1)
call neomake#config#set('b:tempfile_name', '-')
call neomake#config#set('b:stdin_maker.exe', 'cat')
CallNeomake 1, [maker]
AssertNeomakeMessage 'Using uses_stdin (1) from setting.', 3
AssertNeomakeMessage "Using setting tempfile_name='-' from 'buffer'.", 3
if neomake#has_async_support()
AssertNeomakeMessage 'Starting async job: cat -.', 2
else
AssertNeomakeMessage "Starting [string]: cat -.", 2
endif
AssertEqual map(getloclist(0), 'v:val.text'), ['line1', 'line2']
bwipe!
Execute (supports_stdin can be a setting):
new
let b:neomake_mymaker_supports_stdin = 1
let maker = neomake#create_maker_object({'name': 'mymaker'}, 'vim')
let jobinfo = NeomakeTestsFakeJobinfo()
AssertEqual maker._get_fname_for_buffer(jobinfo), '-'
AssertNeomakeMessage 'Using stdin for unnamed buffer (-).', 3
bwipe
Execute (supports_stdin: adjusted args get expanded correctly):
new
new
let buf1 = bufnr('%')
let s:tmpdir = fnamemodify(tempname(), ':h')
file testfile
let maker1 = copy(g:error_maker)
let maker1.serialize = 1
function maker1.process_output(...)
" Change buffer.
wincmd p
return []
endfunction
let maker2 = {'exe': 'echo'}
function maker2.supports_stdin(jobinfo) abort
let self.args += ['%:t']
return 1
endfunction
call neomake#Make(1, [maker1, maker2])
NeomakeTestsWaitForMessage 'Using stdin for unreadable buffer (-).', 3, {'bufnr': buf1}
wincmd p
NeomakeTestsWaitForFinishedJobs
AssertEqual map(getloclist(0), 'v:val.text'), ['testfile -']
bwipe
bwipe