Include: include/setup.vader

Execute (jobinfo.get_pid):
  if NeomakeAsyncTestsSetup()
    let maker = NeomakeTestsCommandMaker('echo-pid-and-sleep', 'echo $$; sleep 10')
    let maker.buffer_output = 0
    let jobinfo = neomake#Make({'enabled_makers': [maker]})[0]
    NeomakeTestsWaitForMessage '\v^output on stdout: \[''(\d+)'', ''''\].'
    let pid = +g:neomake_test_matchlist[1]
    AssertEqual jobinfo.get_pid(), pid

    call neomake#CancelJob(jobinfo.id)
    if has('nvim-0.4.0')
      let expected_status = 143
    elseif has('nvim')
      let expected_status = 0
    else
      let expected_status = -1
    endif
    NeomakeTestsWaitForMessage '\Vexit: echo-pid-and-sleep: '.expected_status.' (job was canceled).'
    NeomakeTestsWaitForFinishedJobs
    AssertEqual jobinfo.get_pid(), -1
  endif

Execute (jobinfo.cd: handles/keeps trailing slash with root dir):
  new
  let jobinfo = neomake#jobinfo#new()
  let tmpdir = fnamemodify(tempname(), ':h')
  exe 'lcd '.tmpdir
  Assert haslocaldir()

  let root = fnamemodify('/', ':p')

  call jobinfo.cd('/')
  AssertEqual jobinfo.cwd, root

  " Should not :lcd again (verified manually).
  call jobinfo.cd('/')
  AssertEqual jobinfo.cwd, root

  AssertEqual getcwd(), root

  " Empty dir defaults to current cwd.
  call jobinfo.cd('')
  AssertEqual getcwd(), root
  AssertEqual jobinfo.cwd, root

  call jobinfo.cd(tmpdir)
  AssertEqual getcwd(), tmpdir
  AssertEqual jobinfo.cwd, tmpdir
  bwipe

Execute (jobinfo.cd: empty dir defaults to $HOME):
  new
  let root = fnamemodify('/', ':p')
  exe 'lcd '.root

  let jobinfo = neomake#jobinfo#new()
  Assert !has_key(jobinfo, 'cwd')

  Save $HOME
  let $HOME = '/doesnotexist'

  let r = jobinfo.cd('')
  Assert r =~# '\VVim(lcd):E344:'
  Assert !has_key(jobinfo, 'cwd')

  let $HOME = fnamemodify(tempname(), ':h')
  AssertEqual jobinfo.cd(''), ''

  AssertEqual getcwd(), $HOME
  AssertEqual jobinfo.cwd, $HOME
  bwipe