Before: Save g:ale_go_go111module call ale#assert#SetUpLinterTest('go', 'golangci_lint') call ale#test#SetFilename('test.go') " Test with version 1.64.8 by default GivenCommandOutput ['golangci-lint has version 1.64.8 built with go1.23.0'] After: Restore unlet! b:ale_go_go111module call ale#assert#TearDownLinterTest() Execute(The golangci-lint defaults should be correct): AssertLinterCwd '%s:h', AssertLinter 'golangci-lint', \ ale#Escape('golangci-lint') . ' run --out-format=json --show-stats=0' Execute(The golangci-lint defaults should be correct with no version info): GivenCommandOutput [] AssertLinterCwd '%s:h', AssertLinter 'golangci-lint', \ ale#Escape('golangci-lint') . ' run --out-format=json --show-stats=0' Execute(The golangci-lint defaults should be correct with version 2): GivenCommandOutput ['golangci-lint has version 2.0.2 built with go1.24.0'] AssertLinterCwd '%s:h', AssertLinter 'golangci-lint', \ ale#Escape('golangci-lint') . ' run --output.json.path stdout --output.text.path stderr --show-stats=0' Execute(The golangci-lint callback should use a configured executable): let b:ale_go_golangci_lint_executable = 'something else' AssertLinter 'something else', \ ale#Escape('something else') \ . ' run --out-format=json --show-stats=0' Execute(The golangci-lint callback should use a configured version 2 executable): GivenCommandOutput ['golangci-lint has version 2.0.0 built with go1.22.0'] let b:ale_go_golangci_lint_executable = 'something else' AssertLinter 'something else', \ ale#Escape('something else') \ . ' run --output.json.path stdout --output.text.path stderr --show-stats=0' Execute(The golangci-lint callback should use configured options): let b:ale_go_golangci_lint_options = '--foobar' AssertLinter 'golangci-lint', \ ale#Escape('golangci-lint') \ . ' run ' \ . '--foobar ' \ . '--out-format=json ' \ . '--show-stats=0' Execute(The golangci-lint callback should support environment variables): let b:ale_go_go111module = 'on' AssertLinter 'golangci-lint', \ ale#Env('GO111MODULE', 'on') \ . ale#Escape('golangci-lint') \ . ' run ' \ . '--out-format=json ' \ . '--show-stats=0' Execute(The golangci-lint `lint_package` option should use the correct command): let b:ale_go_golangci_lint_package = 0 AssertLinter 'golangci-lint', \ ale#Escape('golangci-lint') \ . ' run ' . ale#Escape(expand('%' . ':t')) \ . ' --out-format=json --show-stats=0'