Skip to content

Commit a62c7ce

Browse files
committed
add tests for golangci-lint
1 parent 380b1d6 commit a62c7ce

File tree

2 files changed

+87
-47
lines changed

2 files changed

+87
-47
lines changed

autoload/go/lint.vim

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@ function! s:golangcilintcmd(bin_path)
256256
let cmd += ["run"]
257257
let cmd += ["--print-issued-lines=false"]
258258
let cmd += ["--disable-all"]
259+
" do not use the default exclude patterns, because doing so causes golint
260+
" problems about missing doc strings to be ignored and other things that
261+
" golint identifies.
262+
let cmd += ["--exclude-use-default=false"]
259263
return cmd
260264
endfunction
261265

autoload/go/lint_test.vim

Lines changed: 83 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,86 +3,122 @@ let s:cpo_save = &cpo
33
set cpo&vim
44

55
func! Test_Gometa() abort
6+
call s:gometa('gometaliner')
7+
endfunc
8+
9+
func! Test_GometaGolangciLint() abort
10+
call s:gometa('golangci-lint')
11+
endfunc
12+
13+
func! s:gometa(metalinter) abort
614
let $GOPATH = fnameescape(fnamemodify(getcwd(), ':p')) . 'test-fixtures/lint'
715
silent exe 'e ' . $GOPATH . '/src/lint/lint.go'
816

9-
let expected = [
10-
\ {'lnum': 5, 'bufnr': bufnr('%')+1, 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingFooDoc should have comment or be unexported (golint)'}
11-
\ ]
17+
try
18+
let g:go_metalinter_comand = a:metalinter
19+
let expected = [
20+
\ {'lnum': 5, 'bufnr': bufnr('%')+1, 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingFooDoc should have comment or be unexported (golint)'}
21+
\ ]
1222

13-
" clear the quickfix lists
14-
call setqflist([], 'r')
23+
" clear the quickfix lists
24+
call setqflist([], 'r')
1525

16-
let g:go_metalinter_enabled = ['golint']
26+
let g:go_metalinter_enabled = ['golint']
1727

18-
call go#lint#Gometa(0, 0, $GOPATH . '/src/foo')
28+
call go#lint#Gometa(0, 0, $GOPATH . '/src/foo')
1929

20-
let actual = getqflist()
21-
let start = reltime()
22-
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
23-
sleep 100m
2430
let actual = getqflist()
25-
endwhile
26-
27-
call gotest#assert_quickfix(actual, expected)
28-
unlet g:go_metalinter_enabled
31+
let start = reltime()
32+
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
33+
sleep 100m
34+
let actual = getqflist()
35+
endwhile
36+
37+
call gotest#assert_quickfix(actual, expected)
38+
finally
39+
unlet g:go_metalinter_enabled
40+
endtry
2941
endfunc
3042

3143
func! Test_GometaWithDisabled() abort
44+
call s:gometawithdisabled('gometalinter')
45+
endfunc
46+
47+
func! Test_GometaWithDisabledGolangciLint() abort
48+
call s:gometawithdisabled('golangci-lint')
49+
endfunc
50+
51+
func! s:gometawithdisabled(metalinter) abort
3252
let $GOPATH = fnameescape(fnamemodify(getcwd(), ':p')) . 'test-fixtures/lint'
3353
silent exe 'e ' . $GOPATH . '/src/lint/lint.go'
3454

35-
let expected = [
36-
\ {'lnum': 5, 'bufnr': bufnr('%')+1, 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingFooDoc should have comment or be unexported (golint)'}
37-
\ ]
55+
try
56+
let g:go_metalinter_comand = a:metalinter
57+
let expected = [
58+
\ {'lnum': 5, 'bufnr': bufnr('%')+1, 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingFooDoc should have comment or be unexported (golint)'}
59+
\ ]
3860

39-
" clear the quickfix lists
40-
call setqflist([], 'r')
61+
" clear the quickfix lists
62+
call setqflist([], 'r')
4163

42-
let g:go_metalinter_disabled = ['vet']
64+
let g:go_metalinter_disabled = ['vet']
4365

44-
call go#lint#Gometa(0, 0, $GOPATH . '/src/foo')
66+
call go#lint#Gometa(0, 0, $GOPATH . '/src/foo')
4567

46-
let actual = getqflist()
47-
let start = reltime()
48-
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
49-
sleep 100m
5068
let actual = getqflist()
51-
endwhile
52-
53-
call gotest#assert_quickfix(actual, expected)
54-
unlet g:go_metalinter_disabled
69+
let start = reltime()
70+
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
71+
sleep 100m
72+
let actual = getqflist()
73+
endwhile
74+
75+
call gotest#assert_quickfix(actual, expected)
76+
finally
77+
unlet g:go_metalinter_disabled
78+
endtry
5579
endfunc
5680

5781
func! Test_GometaAutoSave() abort
82+
call s:gometaautosave('gometalinter')
83+
endfunc
84+
85+
func! Test_GometaAutoSaveGolangciLint() abort
86+
call s:gometaautosave('golangci-lint')
87+
endfunc
88+
89+
func! s:gometaautosave(metalinter) abort
5890
let $GOPATH = fnameescape(fnamemodify(getcwd(), ':p')) . 'test-fixtures/lint'
5991
silent exe 'e ' . $GOPATH . '/src/lint/lint.go'
6092

61-
let expected = [
62-
\ {'lnum': 5, 'bufnr': bufnr('%'), 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingDoc should have comment or be unexported (golint)'}
63-
\ ]
93+
try
94+
let g:go_metalinter_comand = a:metalinter
95+
let expected = [
96+
\ {'lnum': 5, 'bufnr': bufnr('%'), 'col': 1, 'valid': 1, 'vcol': 0, 'nr': -1, 'type': 'w', 'pattern': '', 'text': 'exported function MissingDoc should have comment or be unexported (golint)'}
97+
\ ]
6498

65-
let winnr = winnr()
99+
let winnr = winnr()
66100

67-
" clear the location lists
68-
call setloclist(l:winnr, [], 'r')
101+
" clear the location lists
102+
call setloclist(l:winnr, [], 'r')
69103

70-
let g:go_metalinter_autosave_enabled = ['golint']
104+
let g:go_metalinter_autosave_enabled = ['golint']
71105

72-
call go#lint#Gometa(0, 1)
106+
call go#lint#Gometa(0, 1)
73107

74-
let actual = getloclist(l:winnr)
75-
let start = reltime()
76-
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
77-
sleep 100m
78108
let actual = getloclist(l:winnr)
79-
endwhile
80-
81-
call gotest#assert_quickfix(actual, expected)
82-
unlet g:go_metalinter_autosave_enabled
109+
let start = reltime()
110+
while len(actual) == 0 && reltimefloat(reltime(start)) < 10
111+
sleep 100m
112+
let actual = getloclist(l:winnr)
113+
endwhile
114+
115+
call gotest#assert_quickfix(actual, expected)
116+
finally
117+
unlet g:go_metalinter_autosave_enabled
118+
endtry
83119
endfunc
84120

85-
func! Test_Vet()
121+
func! Test_Vet() abort
86122
let $GOPATH = fnameescape(fnamemodify(getcwd(), ':p')) . 'test-fixtures/lint'
87123
silent exe 'e ' . $GOPATH . '/src/vet/vet.go'
88124
compiler go

0 commit comments

Comments
 (0)