Isaev Denis 95ec0cf21e
dramatically reduce memory usage (#758)
Run all linters per package. It allows unloading package data when it's
processed. It dramatically reduces memory (and CPU because of GC) usage.

Relates: #337
2019-09-30 16:19:41 +03:00

49 lines
805 B
Go

package goanalysis
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"golang.org/x/tools/go/packages"
)
func TestParseError(t *testing.T) {
cases := []struct {
in, out string
good bool
}{
{"f.go:1:2", "", true},
{"f.go:1", "", true},
{"f.go", "", false},
{"f.go: 1", "", false},
}
for _, c := range cases {
i, _ := parseError(packages.Error{
Pos: c.in,
Msg: "msg",
})
if !c.good {
assert.Nil(t, i)
continue
}
assert.NotNil(t, i)
pos := fmt.Sprintf("%s:%d", i.FilePath(), i.Line())
if i.Pos.Column != 0 {
pos += fmt.Sprintf(":%d", i.Pos.Column)
}
out := pos
expOut := c.out
if expOut == "" {
expOut = c.in
}
assert.Equal(t, expOut, out)
assert.Equal(t, "typecheck", i.FromLinter)
assert.Equal(t, "msg", i.Text)
}
}