Before: call ale#assert#SetUpLinterTest('go', 'gobuild') let g:env_prefix = has('win32') \ ? 'set GOPATH=' . ale#Escape('/foo/bar') . ' && ' \ : 'GOPATH=' . ale#Escape('/foo/bar') . ' ' call ale_linters#go#gobuild#ResetEnv() WithChainResults ['/foo/bar', '/foo/baz'] After: unlet! g:env_prefix call ale#assert#TearDownLinterTest() Execute(The default commands should be correct): AssertLinter 'go', [ \ 'go env GOPATH GOROOT', \ g:env_prefix . 'cd ' . ale#Escape(expand('%:p:h')) . ' && ' \ . 'go test -c -o /dev/null ./' \] " We shouldn't run `go env` many times after we've got it. AssertLinter 'go', [ \ '', \ g:env_prefix . 'cd ' . ale#Escape(expand('%:p:h')) . ' && ' \ . 'go test -c -o /dev/null ./' \] Execute(Extra options should be supported): let g:ale_go_gobuild_options = '--foo-bar' AssertLinter 'go', [ \ 'go env GOPATH GOROOT', \ g:env_prefix . 'cd ' . ale#Escape(expand('%:p:h')) . ' && ' \ . 'go test --foo-bar -c -o /dev/null ./' \]