Before: call ale#assert#SetUpLinterTest('lua', 'luacheck') " Default to testing linting Lua not in Vim directories. call ale#test#SetFilename('/test.lua') After: " Clear the variable for saving the result of the runtime check. " We don't want to cache the result between tests. unlet! b:ale_in_runtimepath call ale#assert#TearDownLinterTest() Execute(The luacheck default command should be correct): AssertLinter 'luacheck', \ ale#Escape('luacheck') . ' --formatter plain --codes --filename %s -' Execute(You should be able to set luacheck options): let g:ale_lua_luacheck_options = '--config filename' AssertLinter 'luacheck', \ ale#Escape('luacheck') \ . ' --config filename' \ . ' --formatter plain --codes --filename %s -' Execute(The luacheck executable should be configurable): let g:ale_lua_luacheck_executable = 'luacheck.sh' AssertLinter 'luacheck.sh', \ ale#Escape('luacheck.sh') . ' --formatter plain --codes --filename %s -' Execute(The luacheck command should include vim as a global if in runtimepath): call ale#test#SetFilename('test.lua') AssertLinter 'luacheck', \ ale#Escape('luacheck') . ' --globals vim --formatter plain --codes --filename %s -' Execute(The default Vim globals should not be set if globals are already set): call ale#test#SetFilename('test.lua') let g:ale_lua_luacheck_options = '--globals foo' AssertLinter 'luacheck', \ ale#Escape('luacheck') . ' --globals foo --formatter plain --codes --filename %s -'