Before: runtime ale_linters/go/golangci_lint.vim After: call ale#linter#Reset() Execute (The golangci-lint handler should handle only typecheck lines as errors): call ale#test#SetFilename('app/main.go') AssertEqual \ [ \ { \ 'lnum': 1, \ 'col': 0, \ 'text': 'typecheck - found packages main (main.go) and validator (validation.go) in ', \ 'type': 'E', \ 'filename': ale#path#Simplify(expand('%:p:h') . '/main.go'), \ }, \ { \ 'lnum': 1, \ 'col': 1, \ 'text': 'typecheck - package validator_test; expected package main_test', \ 'type': 'E', \ 'filename': ale#path#Simplify(expand('%:p:h') . '/validation_encoder_test.go'), \ }, \ { \ 'lnum': 1, \ 'col': 1, \ 'text': 'typecheck - package validator_test; expected package main_test', \ 'type': 'E', \ 'filename': ale#path#Simplify(expand('%:p:h') . '/validation_error_test.go'), \ }, \ { \ 'lnum': 505, \ 'col': 75, \ 'text': 'gomnd - Magic number: 404, in detected', \ 'type': 'W', \ 'filename': ale#path#Simplify(expand('%:p:h') . '/main.go'), \ } \ ], \ ale_linters#go#golangci_lint#Handler(bufnr(''), [ \ '{', \ ' "Issues": [', \ ' {', \ ' "FromLinter": "typecheck",', \ ' "Text": "found packages main (main.go) and validator (validation.go) in ",', \ ' "Severity": "",', \ ' "SourceLines": [', \ ' "package main"', \ ' ],', \ ' "Pos": {', \ ' "Filename": "main.go",', \ ' "Offset": 0,', \ ' "Line": 1,', \ ' "Column": 0', \ ' },', \ ' "ExpectNoLint": false,', \ ' "ExpectedNoLintLinter": ""', \ ' },', \ ' {', \ ' "FromLinter": "typecheck",', \ ' "Text": "package validator_test; expected package main_test",', \ ' "Severity": "",', \ ' "SourceLines": [', \ ' "package validator_test"', \ ' ],', \ ' "Pos": {', \ ' "Filename": "validation_encoder_test.go",', \ ' "Offset": 0,', \ ' "Line": 1,', \ ' "Column": 1', \ ' },', \ ' "ExpectNoLint": false,', \ ' "ExpectedNoLintLinter": ""', \ ' },', \ ' {', \ ' "FromLinter": "typecheck",', \ ' "Text": "package validator_test; expected package main_test",', \ ' "Severity": "",', \ ' "SourceLines": [', \ ' "package validator_test"', \ ' ],', \ ' "Pos": {', \ ' "Filename": "validation_error_test.go",', \ ' "Offset": 0,', \ ' "Line": 1,', \ ' "Column": 1', \ ' },', \ ' "ExpectNoLint": false,', \ ' "ExpectedNoLintLinter": ""', \ ' },', \ ' {', \ ' "FromLinter": "gomnd",', \ ' "Text": "Magic number: 404, in detected",', \ ' "Severity": "",', \ ' "SourceLines": [', \ ' "package validator_test"', \ ' ],', \ ' "Pos": {', \ ' "Filename": "main.go",', \ ' "Offset": 0,', \ ' "Line": 505,', \ ' "Column": 75', \ ' },', \ ' "ExpectNoLint": false,', \ ' "ExpectedNoLintLinter": ""', \ ' }', \ ' ]', \ '}', \ ]) Execute (The golangci-lint handler should set proper filename): call ale#test#SetFilename('app/cmd/server/main.go') AssertEqual \ [ \ { \ 'lnum': 198, \ 'col': 19, \ 'text': 'funlen - Function getConfig has too many statements (51 > 50)', \ 'type': 'W', \ 'filename': ale#path#Simplify(expand('%:p:h') . '/main.go'), \ }, \ ], \ ale_linters#go#golangci_lint#Handler(bufnr(''), [ \ '{', \ ' "Issues": [', \ ' {', \ ' "FromLinter": "funlen",', \ ' "Text": "Function getConfig has too many statements (51 > 50)",', \ ' "Severity": "",', \ ' "SourceLines": [', \ ' "package main"', \ ' ],', \ ' "Pos": {', \ ' "Filename": "cmd/server/main.go",', \ ' "Offset": 5374,', \ ' "Line": 198,', \ ' "Column": 19', \ ' },', \ ' "ExpectNoLint": false,', \ ' "ExpectedNoLintLinter": ""', \ ' }', \ ' ]', \ '}', \ ])