Include: include/setup.vader

Execute (Vint: generic postprocessing for highlights):
  new
  file file1.vim
  norm! iecho l:undefined_var
  norm! oecho unused_var
  norm! osome unexpected_token

  let vint_maker = NeomakeTestsGetMakerWithOutput(neomake#makers#ft#vim#vint(), [
  \ "file1.vim:1:6:warning:Undefined variable: l:undefined_var (ProhibitUsingUndeclaredVariable)",
  \ "file1.vim:2:6:warning:Unused variable: unused_var (ProhibitUnusedVariable)",
  \ "file1.vim:3:6:error:unexpected token: unexpected_token (SyntaxError)",
  \ ])
  let vint_maker.append_file = 0

  call neomake#highlights#ResetFile(bufnr('%'))
  AssertEqual neomake#highlights#_get(), {'file': {}, 'project': {}}

  call neomake#Make(1, [vint_maker])
  NeomakeTestsWaitForFinishedJobs
  let bufnr = bufnr('%')
  AssertEqualQf getloclist(0), [{
  \ 'lnum': 1,
  \ 'bufnr': bufnr,
  \ 'col': 6,
  \ 'valid': 1,
  \ 'vcol': 0,
  \ 'nr': -1,
  \ 'type': 'w',
  \ 'pattern': '',
  \ 'text': 'Undefined variable: l:undefined_var (ProhibitUsingUndeclaredVariable)'
  \ }, {
  \ 'lnum': 2,
  \ 'bufnr': bufnr,
  \ 'col': 6,
  \ 'valid': 1,
  \ 'vcol': 0,
  \ 'nr': -1,
  \ 'type': 'w',
  \ 'pattern': '',
  \ 'text': 'Unused variable: unused_var (ProhibitUnusedVariable)'
  \ }, {
  \ 'lnum': 3,
  \ 'bufnr': bufnr,
  \ 'col': 6,
  \ 'valid': 1,
  \ 'vcol': 0,
  \ 'nr': -1,
  \ 'type': 'e',
  \ 'pattern': '',
  \ 'text': 'unexpected token: unexpected_token (SyntaxError)'
  \ }]

  " Test that length has been used with the highlight.
  let highlights = neomake#highlights#_get()
  if has('nvim')
    AssertEqual has_key(highlights['file'], bufnr), 1, "highlight for file"
  else
    AssertEqual highlights.file[bufnr], {
    \ 'NeomakeWarning': [[1, 6, 15], [2, 6, 10]],
    \ 'NeomakeError': [[3, 6, 16]],
    \ 'NeomakeInfo': [],
    \ 'NeomakeMessage': [],
    \ }
  endif
  bwipe!

Execute (vimlint: errorformat):
  Save &efm
  let &efm = neomake#makers#ft#vim#vimlint().errorformat

  new
  file testfile.vim
  lgetexpr 'testfile.vim:33:12:Error: EVP_0: unexpected EOL'
  AssertEqualQf getloclist(0), [{
  \ 'lnum': 33, 'bufnr': bufnr('%'), 'col': 12, 'valid': 1, 'vcol': 0,
  \ 'nr': 0, 'type': 'E', 'pattern': '', 'text': 'unexpected EOL'}]

  lgetexpr 'testfile.vim:2:0:Error: EVP_E171: Missing :endif:    TOPLEVEL'
  AssertEqualQf getloclist(0), [{
  \ 'lnum': 2, 'bufnr': bufnr('%'), 'col': 0, 'valid': 1, 'vcol': 0,
  \ 'nr': 171, 'type': 'E', 'pattern': '', 'text': 'Missing :endif:    TOPLEVEL'}]

  lgetexpr 'testfile.vim:1:1:Error: EVL204: constant in conditional context'
  AssertEqualQf getloclist(0), [{
  \ 'lnum': 1, 'bufnr': bufnr('%'), 'col': 1, 'valid': 1, 'vcol': 0,
  \ 'nr': 204, 'type': 'E', 'pattern': '', 'text': 'constant in conditional context'}]

  lgetexpr 'testfile.vim:2:1:Warning: EVL204: constant in conditional context'
  AssertEqualQf getloclist(0), [{
  \ 'lnum': 2, 'bufnr': bufnr('%'), 'col': 1, 'valid': 1, 'vcol': 0,
  \ 'nr': 204, 'type': 'W', 'pattern': '', 'text': 'constant in conditional context'}]
  bwipe

Execute (vint: handles error with version check):
  let exe = g:NeomakeTestsCreateExe('vint', [
  \ '#!/bin/sh', 'echo "Traceback (most recent call last):" >&2'])

  let maker = neomake#makers#ft#vim#vint()
  let maker.exe = exe
  AssertEqual maker.supports_stdin({}), 0
