Before:
  Save $TMPDIR

  " Set TMPDIR so the temporary file checks work.
  let $TMPDIR = '/tmp'

  runtime ale_linters/idris/idris.vim

After:
  Restore

  call ale#linter#Reset()

Execute(The idris handler should parse messages that reference a single column):
  if has('win32')
    call ale#test#SetFilename($TEMP . '\foo.idr')
  else
    call ale#test#SetFilename('/tmp/foo.idr')
  endif

  AssertEqual
  \ [
  \   {
  \     'lnum': 4,
  \     'col': 5,
  \     'type': 'E',
  \     'text': 'When checking right hand side of main with expected type IO () When checking an application of function Prelude.Monad.>>=: Type mismatch between IO () (Type of putStrLn _) and _ -> _ (Is putStrLn _ applied to too many arguments?) Specifically: Type mismatch between IO and \uv => _ -> uv'
  \   }
  \ ],
  \ ale_linters#idris#idris#Handle(bufnr(''), [
  \   expand('%:p') . ':4:5:',
  \   'When checking right hand side of main with expected type',
  \   '        IO ()',
  \   '',
  \   'When checking an application of function Prelude.Monad.>>=:',
  \   '        Type mismatch between',
  \   '                IO () (Type of putStrLn _)',
  \   '        and',
  \   '                _ -> _ (Is putStrLn _ applied to too many arguments?)',
  \   '',
  \   '        Specifically:',
  \   '                Type mismatch between',
  \   '                        IO',
  \   '                and',
  \   '                        \uv => _ -> uv',
  \ ])

Execute(The idris handler should parse messages that reference a column range):
  call ale#test#SetFilename('/tmp/foo.idr')

  AssertEqual
  \ [
  \   {
  \     'lnum': 11,
  \     'col': 11,
  \     'type': 'E',
  \     'text': 'When checking right hand side of Main.case block in main at /tmp/foo.idr:10:10 with expected type IO () Last statement in do block must be an expression'
  \   }
  \ ],
  \ ale_linters#idris#idris#Handle(bufnr(''), [
  \   expand('%:p') . ':11:11-13:',
  \   'When checking right hand side of Main.case block in main at /tmp/foo.idr:10:10 with expected type',
  \   '        IO ()',
  \   '',
  \   'Last statement in do block must be an expression',
  \ ])
