Execute ( SpaceVim api: job ):
  let job = SpaceVim#api#import('job')
  let argv = ['cat']
  let g:stdout = ''
  let stderr = ''
  let exit_data = 1
  function! s:on_stdout(id, data, event) abort
    if a:event ==# 'stdout'
      for a in a:data
        if !empty(a)
          let g:stdout = a
        endif
      endfor
    elseif a:event ==# 'exit'
      let g:exit_data = a:data
    else
      let g:stderr = a:data
    endif
  endfunction
  let opt = {
    \ 'on_stdout' : function('s:on_stdout'),
    \ 'on_stderr' : function('s:on_stdout'),
    \ 'on_exit' : function('s:on_stdout'),
    \ }
  let jobid = job.start(argv,opt)
  if jobid >= 0
    call job.send(jobid, 'foo')
    sleep 10m
    AssertEqual stdout, 'foo'
    AssertEqual job.status(jobid), 'run'
    call job.stop(jobid)
    AssertEqual exit_data, 1
  else
    let jobid = job.start(['echo', 'foo'],opt)
    AssertEqual stdout, 'foo'
    AssertEqual exit_data, 0
  endif