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  }