Before: Save g:ale_go_goimports_executable Save g:ale_go_goimports_options Save g:ale_go_go111module " Use an invalid global executable, so we don't match it. let g:ale_go_goimports_executable = 'xxxinvalid' let g:ale_go_goimports_options = '' call ale#test#SetDirectory('/testplugin/test/fixers') call ale#test#SetFilename('../test-files/go/testfile.go') After: Restore unlet! b:ale_go_go111module call ale#test#RestoreDirectory() Execute(The goimports callback should return 0 when the executable isn't executable): AssertEqual \ 0, \ ale#fixers#goimports#Fix(bufnr('')) Execute(The goimports callback should the command when the executable test passes): let g:ale_go_goimports_executable = has('win32') ? 'cmd' : 'echo' AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Escape(g:ale_go_goimports_executable) . ' -l -w -srcdir %s %t' \ }, \ ale#fixers#goimports#Fix(bufnr('')) Execute(The goimports callback should include extra options): let g:ale_go_goimports_executable = has('win32') ? 'cmd' : 'echo' let g:ale_go_goimports_options = '--xxx' AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Escape(g:ale_go_goimports_executable) . ' -l -w -srcdir %s --xxx %t' \ }, \ ale#fixers#goimports#Fix(bufnr('')) Execute(The goimports callback should support Go environment variables): let g:ale_go_goimports_executable = has('win32') ? 'cmd' : 'echo' let g:ale_go_go111module = 'on' AssertEqual \ { \ 'read_temporary_file': 1, \ 'command': ale#Env('GO111MODULE', 'on') \ . ale#Escape(g:ale_go_goimports_executable) \ . ' -l -w -srcdir %s %t' \ }, \ ale#fixers#goimports#Fix(bufnr(''))