Before:
  Save g:ale_glsl_glslls_executable
  Save g:ale_glsl_glslls_logfile

  unlet! g:ale_glsl_glslls_executable
  unlet! g:ale_glsl_glslls_logfile

  runtime ale_linters/glsl/glslls.vim
  call ale#test#SetDirectory('/testplugin/test/command_callback')

After:
  Restore
  call ale#linter#Reset()

Execute(Executable should default to 'glslls'):
  AssertEqual
  \ 'glslls',
  \ ale_linters#glsl#glslls#GetExecutable(bufnr(''))

Execute(Executable should be configurable):
  let g:ale_glsl_glslls_executable = 'foobar'
  AssertEqual
  \ 'foobar',
  \ ale_linters#glsl#glslls#GetExecutable(bufnr(''))

Execute(Command should use executable):
  let command1 = ale_linters#glsl#glslls#GetCommand(bufnr(''))
  AssertEqual command1, ale#Escape('glslls') . ' --stdin'

  let g:ale_glsl_glslls_executable = 'foobar'
  let command2 = ale_linters#glsl#glslls#GetCommand(bufnr(''))
  AssertEqual command2, ale#Escape('foobar') . ' --stdin'

Execute(Setting logfile should work):
  let g:ale_glsl_glslls_logfile = '/tmp/test.log'
  let command = ale_linters#glsl#glslls#GetCommand(bufnr(''))
  AssertEqual command, ale#Escape('glslls') . ' --verbose -l /tmp/test.log --stdin'