* 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
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package regressiontests
|
|
|
|
import "testing"
|
|
|
|
func TestDupl(t *testing.T) {
|
|
t.Parallel()
|
|
source := `package test
|
|
|
|
func findVendoredLinters() string {
|
|
gopaths := strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator))
|
|
for _, home := range vendoredSearchPaths {
|
|
for _, p := range gopaths {
|
|
joined := append([]string{p, "src"}, home...)
|
|
vendorRoot := filepath.Join(joined...)
|
|
fmt.Println(vendorRoot)
|
|
if _, err := os.Stat(vendorRoot); err == nil {
|
|
return vendorRoot
|
|
}
|
|
}
|
|
}
|
|
return ""
|
|
|
|
}
|
|
|
|
func two() string {
|
|
gopaths := strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator))
|
|
for _, home := range vendoredSearchPaths {
|
|
for _, p := range gopaths {
|
|
joined := append([]string{p, "src"}, home...)
|
|
vendorRoot := filepath.Join(joined...)
|
|
fmt.Println(vendorRoot)
|
|
if _, err := os.Stat(vendorRoot); err == nil {
|
|
return vendorRoot
|
|
}
|
|
}
|
|
}
|
|
return ""
|
|
|
|
}
|
|
`
|
|
|
|
expected := Issues{
|
|
{Linter: "dupl", Severity: "warning", Path: "test.go", Line: 3, Col: 0, Message: "duplicate of test.go:19-33"},
|
|
{Linter: "dupl", Severity: "warning", Path: "test.go", Line: 19, Col: 0, Message: "duplicate of test.go:3-17"},
|
|
}
|
|
ExpectIssues(t, "dupl", source, expected)
|
|
}
|