| // Copyright 2023 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 analysis | |
| import ( | |
| "testing" | |
| "github.com/google/go-cmp/cmp" | |
| ) | |
| func TestJSONTreeToDiagnostics(t *testing.T) { | |
| in := JSONTree{ | |
| "pkg1": { | |
| "a": { | |
| Diagnostics: []JSONDiagnostic{ | |
| {Category: "c1", Posn: "pos1", Message: "m1"}, | |
| {Category: "c2", Posn: "pos2", Message: "m2"}, | |
| }, | |
| }, | |
| "b": { | |
| Diagnostics: []JSONDiagnostic{{Category: "c3", Posn: "pos3", Message: "m3"}}, | |
| }, | |
| }, | |
| "pkg2": { | |
| "c": { | |
| Error: &jsonError{Err: "fail"}, | |
| }, | |
| }, | |
| } | |
| got := JSONTreeToDiagnostics(in) | |
| want := []*Diagnostic{ | |
| {PackageID: "pkg1", AnalyzerName: "a", Category: "c1", Position: "pos1", Message: "m1"}, | |
| {PackageID: "pkg1", AnalyzerName: "a", Category: "c2", Position: "pos2", Message: "m2"}, | |
| {PackageID: "pkg1", AnalyzerName: "b", Category: "c3", Position: "pos3", Message: "m3"}, | |
| {PackageID: "pkg2", AnalyzerName: "c", Error: "fail"}, | |
| } | |
| if diff := cmp.Diff(want, got); diff != "" { | |
| t.Errorf("mismatch (-want, +got)\n%s", diff) | |
| } | |
| } |