Files
ale/test/linter/test_golangci_lint.vader
Horacio Sanson 067e74fee8
Some checks failed
CI / build_image (push) Has been cancelled
CI / test_ale (--linters-only) (push) Has been cancelled
CI / test_ale (--lua-only) (push) Has been cancelled
CI / test_ale (--neovim-07-only) (push) Has been cancelled
CI / test_ale (--neovim-08-only) (push) Has been cancelled
CI / test_ale (--vim-80-only) (push) Has been cancelled
CI / test_ale (--vim-90-only) (push) Has been cancelled
Add support for glnagci-lint v2 (#4936)
Version 2 of golangci-lint introduces several breaking changes to the
command line arguments and the configuration file.

Thi PR updates ale integration to support both version 1.6x.x and 2.x.x
of golangci-lint.
2025-03-31 11:46:42 +01:00

75 lines
2.5 KiB
Plaintext

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'