| // Copyright 2019 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package cache |
| |
| import ( |
| "strings" |
| "testing" |
| ) |
| |
| func TestParseErrorMessage(t *testing.T) { |
| tests := []struct { |
| name string |
| in string |
| expectedFileName string |
| expectedLine int |
| expectedColumn int |
| }{ |
| { |
| name: "from go list output", |
| in: "\nattributes.go:13:1: expected 'package', found 'type'", |
| expectedFileName: "attributes.go", |
| expectedLine: 13, |
| expectedColumn: 1, |
| }, |
| } |
| |
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| spn := parseGoListError(tt.in) |
| fn := spn.URI().Filename() |
| |
| if !strings.HasSuffix(fn, tt.expectedFileName) { |
| t.Errorf("expected filename with suffix %v but got %v", tt.expectedFileName, fn) |
| } |
| |
| if !spn.HasPosition() { |
| t.Fatalf("expected span to have position") |
| } |
| |
| pos := spn.Start() |
| if pos.Line() != tt.expectedLine { |
| t.Errorf("expected line %v but got %v", tt.expectedLine, pos.Line()) |
| } |
| |
| if pos.Column() != tt.expectedColumn { |
| t.Errorf("expected line %v but got %v", tt.expectedLine, pos.Line()) |
| } |
| }) |
| } |
| } |