Richard van der Hoff 8fff0e887c Update gometalinter config (#331)
* Update gometalinter config

gometalinter now uses `maligned` instead of `aligncheck`
(https://github.com/alecthomas/gometalinter/pull/367), so we need to update our
config accordingly.

* Update gometalinter

* Disable gotype linter

gotype does not seem to play nicely with the gb vendor directory. In
particular, it wants each of our dependencies to be built and installed (see
https://github.com/golang/go/issues/10969), but (empirically) it will not
accept them being installed in `pkg` but insists on them being in `vendor/pkg`.

This presents a problem because `gb build` builds the packages into `pkg`
(which doesn't seem entirely unreasonable since `.` comes before `vendor` in
`$GOPATH`). `go install github.com/x/y` does install in `vendor/pkg` but
requires us to know the name of each package.

The general conclusion of https://github.com/alecthomas/gometalinter/issues/91
seems to have been that the easiest thing to do is to disable `gotype` for now.

* Fix `unparam` lint

* Fix goshadow lint
2017-11-15 10:25:48 +00:00

68 lines
1.2 KiB
Go

package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestLinterStateCommand(t *testing.T) {
varsDefault := Vars{"tests": "", "not_tests": "true"}
varsWithTest := Vars{"tests": "true", "not_tests": ""}
var testcases = []struct {
linter string
vars Vars
expected string
}{
{
linter: "errcheck",
vars: varsWithTest,
expected: `errcheck -abspath `,
},
{
linter: "errcheck",
vars: varsDefault,
expected: `errcheck -abspath -ignoretests`,
},
{
linter: "gotype",
vars: varsDefault,
expected: `gotype -e `,
},
{
linter: "gotype",
vars: varsWithTest,
expected: `gotype -e -t`,
},
{
linter: "structcheck",
vars: varsDefault,
expected: `structcheck `,
},
{
linter: "structcheck",
vars: varsWithTest,
expected: `structcheck -t`,
},
{
linter: "unparam",
vars: varsDefault,
expected: `unparam -tests=false`,
},
{
linter: "unparam",
vars: varsWithTest,
expected: `unparam `,
},
}
for _, testcase := range testcases {
ls := linterState{
Linter: getLinterByName(testcase.linter, LinterConfig{}),
vars: testcase.vars,
}
assert.Equal(t, testcase.expected, ls.command())
}
}