mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-28 22:02:31 +08:00
Support $GO111MODULE with Go tooling
Allows the user to override $GO111MODULE environment variable through ale options. This gives control over the default behavior of Go module resolution. Golang documentation: https://github.com/golang/go/wiki/Modules#how-to-use-modules Add `ale#Go#EnvString()` function to make it easy to add similar Go environment variables in the future. Use the new `EnvString` function in all available Go tools callbacks & update tests Also add test of linter command callback for `gofmt`
This commit is contained in:
@@ -5,6 +5,7 @@ Before:
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_go_gofmt_executable = 'xxxinvalid'
|
||||
let g:ale_go_gofmt_options = ''
|
||||
let g:ale_go_go111module = ''
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
|
||||
@@ -38,3 +39,16 @@ Execute(The gofmt callback should include custom gofmt options):
|
||||
\ . ' %t',
|
||||
\ },
|
||||
\ ale#fixers#gofmt#Fix(bufnr(''))
|
||||
|
||||
Execute(The gofmt callback should support Go environment variables):
|
||||
let g:ale_go_go111module = 'off'
|
||||
call ale#test#SetFilename('../go_files/testfile.go')
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Env('GO111MODULE', 'off')
|
||||
\ . ale#Escape('xxxinvalid') . ' -l -w'
|
||||
\ . ' %t',
|
||||
\ },
|
||||
\ ale#fixers#gofmt#Fix(bufnr(''))
|
||||
|
||||
@@ -5,6 +5,7 @@ Before:
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_go_goimports_executable = 'xxxinvalid'
|
||||
let g:ale_go_goimports_options = ''
|
||||
let g:ale_go_go111module = ''
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
call ale#test#SetFilename('../go_files/testfile.go')
|
||||
@@ -39,3 +40,16 @@ Execute(The goimports callback should include extra options):
|
||||
\ '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(''))
|
||||
|
||||
@@ -3,6 +3,7 @@ Before:
|
||||
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_go_go_executable = 'xxxinvalid'
|
||||
let g:ale_go_go111module = ''
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
|
||||
After:
|
||||
@@ -12,7 +13,7 @@ After:
|
||||
|
||||
Execute(The gomod callback should return the correct default values):
|
||||
call ale#test#SetFilename('../go_files/go.mod')
|
||||
setl ft=gomod
|
||||
setl filetype=gomod
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
@@ -22,3 +23,16 @@ Execute(The gomod callback should return the correct default values):
|
||||
\ . ' %t',
|
||||
\ },
|
||||
\ ale#fixers#gomod#Fix(bufnr(''))
|
||||
|
||||
Execute(The gomod callback should support Go environment variables):
|
||||
call ale#test#SetFilename('../go_files/go.mod')
|
||||
setl filetype=gomod
|
||||
let g:ale_go_go111module = 'on'
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Env('GO111MODULE', 'on')
|
||||
\ . ale#Escape('xxxinvalid') . ' mod edit -fmt %t'
|
||||
\ },
|
||||
\ ale#fixers#gomod#Fix(bufnr(''))
|
||||
|
||||
Reference in New Issue
Block a user