blob: dd4dcdcc3e5419962f365b46eada534b2e1b527c [file] [log] [blame]
// 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)
}
}