blob: 8f045c293dbab6ac6386e409e23317cfced6eda9 [file] [log] [blame]
// Copyright 2022 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 report
import (
"bytes"
"strings"
"testing"
)
func TestLint(t *testing.T) {
for _, test := range []struct {
report Report
want []string
}{{
report: Report{
Packages: []Package{{
Module: "std",
Package: "time",
Versions: []VersionRange{{
Fixed: "go1.2.1",
}, {
Fixed: "go1.3.2",
}},
}},
},
want: []string{"version ranges overlap"},
}, {
report: Report{
Packages: []Package{{
Module: "std",
Package: "time",
Versions: []VersionRange{{
Introduced: "go1.3",
Fixed: "go1.2.1",
}},
}},
},
want: []string{`version "go1.3" >= "go1.2.1"`},
}} {
got := test.report.Lint()
var missing []string
for _, w := range test.want {
found := false
for _, g := range got {
if strings.Contains(g, w) {
found = true
continue
}
}
if !found {
missing = append(missing, w)
}
}
if len(missing) > 0 {
var buf bytes.Buffer
if err := test.report.encode(&buf); err != nil {
t.Error(err)
}
t.Errorf("missing expected lint warnings in report:\n%v", buf.String())
for _, g := range got {
t.Errorf(" got: %v", g)
}
for _, w := range missing {
t.Errorf(" want: %v", w)
}
}
}
}