Before: Save g:ale_ruby_rubocop_executable Save g:ale_ruby_rubocop_options " Use an invalid global executable, so we don't match it. let g:ale_ruby_rubocop_executable = 'xxxinvalid' let g:ale_ruby_rubocop_options = '' call ale#test#SetDirectory('/testplugin/test/fixers') silent cd .. silent cd command_callback let g:dir = getcwd() After: Restore call ale#test#RestoreDirectory() Execute(The rubocop callback should return the correct default values): call ale#test#SetFilename('ruby_paths/dummy.rb') AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ . ' --auto-correct --force-exclusions %t', \ }, \ ale#fixers#rubocop#Fix(bufnr('')) Execute(The rubocop callback should include configuration files): call ale#test#SetFilename('ruby_paths/with_config/dummy.rb') AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ . ' --config ' . ale#Escape(ale#path#Simplify(g:dir . '/ruby_paths/with_config/.rubocop.yml')) \ . ' --auto-correct --force-exclusions %t', \ }, \ ale#fixers#rubocop#Fix(bufnr('')) Execute(The rubocop callback should include custom rubocop options): let g:ale_ruby_rubocop_options = '--except Lint/Debugger' call ale#test#SetFilename('ruby_paths/with_config/dummy.rb') AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ . ' --config ' . ale#Escape(ale#path#Simplify(g:dir . '/ruby_paths/with_config/.rubocop.yml')) \ . ' --except Lint/Debugger' \ . ' --auto-correct --force-exclusions %t', \ }, \ ale#fixers#rubocop#Fix(bufnr(''))