1
2
3
4
5 package analysisflags_test
6
7 import (
8 "fmt"
9 "strings"
10 "testing"
11
12 "golang.org/x/tools/go/analysis"
13 "golang.org/x/tools/go/analysis/internal/analysisflags"
14 )
15
16 func TestResolveURLs(t *testing.T) {
17
18
19
20
21 aURL := &analysis.Analyzer{URL: "https://analyzer.example"}
22 noURL := &analysis.Analyzer{URL: ""}
23 tests := []struct {
24 analyzer *analysis.Analyzer
25 diagnostic analysis.Diagnostic
26 want string
27 }{
28 {noURL, analysis.Diagnostic{Category: "", URL: ""}, ""},
29 {noURL, analysis.Diagnostic{Category: "", URL: "#relative"}, "#relative"},
30 {noURL, analysis.Diagnostic{Category: "", URL: "https://absolute.diagnostic"}, "https://absolute.diagnostic"},
31 {noURL, analysis.Diagnostic{Category: "category", URL: ""}, "#category"},
32 {noURL, analysis.Diagnostic{Category: "category", URL: "#relative"}, "#relative"},
33 {noURL, analysis.Diagnostic{Category: "category", URL: "https://absolute.diagnostic"}, "https://absolute.diagnostic"},
34 {aURL, analysis.Diagnostic{Category: "", URL: ""}, "https://analyzer.example"},
35 {aURL, analysis.Diagnostic{Category: "", URL: "#relative"}, "https://analyzer.example#relative"},
36 {aURL, analysis.Diagnostic{Category: "", URL: "https://absolute.diagnostic"}, "https://absolute.diagnostic"},
37 {aURL, analysis.Diagnostic{Category: "category", URL: ""}, "https://analyzer.example#category"},
38 {aURL, analysis.Diagnostic{Category: "category", URL: "#relative"}, "https://analyzer.example#relative"},
39 {aURL, analysis.Diagnostic{Category: "category", URL: "https://absolute.diagnostic"}, "https://absolute.diagnostic"},
40 }
41 for _, c := range tests {
42 got, err := analysisflags.ResolveURL(c.analyzer, c.diagnostic)
43 if err != nil {
44 t.Errorf("Unexpected error from ResolveURL %s", err)
45 } else if got != c.want {
46 t.Errorf("ResolveURL(%q,%v)=%q. want %s", c.analyzer.URL, c.diagnostic, got, c.want)
47 }
48 }
49 }
50
51 func TestResolveURLErrors(t *testing.T) {
52 tests := []struct {
53 analyzer *analysis.Analyzer
54 diagnostic analysis.Diagnostic
55 want string
56 }{
57 {&analysis.Analyzer{URL: ":not a url"}, analysis.Diagnostic{Category: "", URL: "#relative"}, "invalid Analyzer.URL"},
58 {&analysis.Analyzer{URL: "https://analyzer.example"}, analysis.Diagnostic{Category: "", URL: ":not a URL"}, "invalid Diagnostic.URL"},
59 }
60 for _, c := range tests {
61 _, err := analysisflags.ResolveURL(c.analyzer, c.diagnostic)
62 if got := fmt.Sprint(err); !strings.HasPrefix(got, c.want) {
63 t.Errorf("ResolveURL(%q, %q) expected an error starting with %q. got %q", c.analyzer.URL, c.diagnostic.URL, c.want, got)
64 }
65 }
66 }
67
View as plain text