github.com/nozzle/golangci-lint@v1.49.0-nz3/pkg/golinters/goanalysis/linter_test.go (about) 1 package goanalysis 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "golang.org/x/tools/go/packages" 9 ) 10 11 func TestParseError(t *testing.T) { 12 cases := []struct { 13 in, out string 14 good bool 15 }{ 16 {"f.go:1:2", "", true}, 17 {"f.go:1", "", true}, 18 {"f.go", "", false}, 19 {"f.go: 1", "", false}, 20 } 21 22 for _, c := range cases { 23 i, _ := parseError(packages.Error{ 24 Pos: c.in, 25 Msg: "msg", 26 }) 27 if !c.good { 28 assert.Nil(t, i) 29 continue 30 } 31 32 assert.NotNil(t, i) 33 34 pos := fmt.Sprintf("%s:%d", i.FilePath(), i.Line()) 35 if i.Pos.Column != 0 { 36 pos += fmt.Sprintf(":%d", i.Pos.Column) 37 } 38 out := pos 39 expOut := c.out 40 if expOut == "" { 41 expOut = c.in 42 } 43 assert.Equal(t, expOut, out) 44 45 assert.Equal(t, "typecheck", i.FromLinter) 46 assert.Equal(t, "msg", i.Text) 47 } 48 }