Before: Save g:ale_go_go111module call ale#assert#SetUpLinterTest('go', 'golangci_lint') call ale#test#SetFilename('test.go') After: Restore unlet! b:ale_go_go111module call ale#assert#TearDownLinterTest() Execute(The golangci-lint defaults should be correct): AssertLinter 'golangci-lint', \ ale#path#CdString(expand('%:p:h')) \ . ale#Escape('golangci-lint') \ . ' run ' . ale#Escape(expand('%' . ':t')) \ . ' --enable-all' Execute(The golangci-lint callback should use a configured executable): let b:ale_go_golangci_lint_executable = 'something else' AssertLinter 'something else', \ ale#path#CdString(expand('%:p:h')) \ . ale#Escape('something else') \ . ' run ' . ale#Escape(expand('%' . ':t')) \ . ' --enable-all' Execute(The golangci-lint callback should use configured options): let b:ale_go_golangci_lint_options = '--foobar' AssertLinter 'golangci-lint', \ ale#path#CdString(expand('%:p:h')) \ . ale#Escape('golangci-lint') \ . ' run ' . ale#Escape(expand('%' . ':t')) \ . ' --foobar' Execute(The golangci-lint callback should support environment variables): let b:ale_go_go111module = 'on' AssertLinter 'golangci-lint', \ ale#path#CdString(expand('%:p:h')) \ . ale#Env('GO111MODULE', 'on') \ . ale#Escape('golangci-lint') \ . ' run ' . ale#Escape(expand('%' . ':t')) \ . ' --enable-all' Execute(The golangci-lint `lint_package` option should use the correct command): let b:ale_go_golangci_lint_package = 1 AssertLinter 'golangci-lint', \ ale#path#CdString(expand('%:p:h')) \ . ale#Escape('golangci-lint') . ' run --enable-all'