Before: call ale#assert#SetUpLinterTest('ruby', 'packwerk') call ale#test#SetFilename('../test-files/ruby/valid_rails_app/db/test.rb') let g:ale_ruby_packwerk_executable = 'packwerk' let g:ale_ruby_packwerk_options = '' let b:sep = has('win32') ? '\' : '/' After: unlet! b:sep call ale#assert#TearDownLinterTest() Execute(Executable should default to packwerk): AssertLinter 'packwerk', ale#Escape('packwerk') \ . ' check ' \ . ale#Escape('db' . b:sep . 'test.rb') Execute(Should be able to set a custom executable): let g:ale_ruby_packwerk_executable = 'bin/packwerk' AssertLinter 'bin/packwerk', ale#Escape('bin/packwerk') \ . ' check ' \ . ale#Escape('db' . b:sep . 'test.rb') Execute(Setting bundle appends 'exec packwerk'): let g:ale_ruby_packwerk_executable = 'path to/bundle' AssertLinter 'path to/bundle', ale#Escape('path to/bundle') \ . ' exec packwerk' \ . ' check ' \ . ale#Escape('db' . b:sep . 'test.rb') Execute(Command callback should be empty when not in a valid Rails app): call ale#test#SetFilename('../test-files/ruby/not_a_rails_app/test.rb') AssertLinter 'packwerk', ''