github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/tfdiags/rpc_friendly_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package tfdiags 5 6 import ( 7 "bytes" 8 "encoding/gob" 9 "fmt" 10 "reflect" 11 "testing" 12 13 "github.com/davecgh/go-spew/spew" 14 15 "github.com/hashicorp/hcl/v2" 16 ) 17 18 func TestDiagnosticsForRPC(t *testing.T) { 19 var diags Diagnostics 20 diags = diags.Append(fmt.Errorf("bad")) 21 diags = diags.Append(SimpleWarning("less bad")) 22 diags = diags.Append(&hcl.Diagnostic{ 23 Severity: hcl.DiagError, 24 Summary: "bad bad bad", 25 Detail: "badily bad bad", 26 Subject: &hcl.Range{ 27 Filename: "foo", 28 }, 29 Context: &hcl.Range{ 30 Filename: "bar", 31 }, 32 }) 33 34 buf := bytes.Buffer{} 35 enc := gob.NewEncoder(&buf) 36 dec := gob.NewDecoder(&buf) 37 38 rpcDiags := diags.ForRPC() 39 err := enc.Encode(rpcDiags) 40 if err != nil { 41 t.Fatalf("error on Encode: %s", err) 42 } 43 44 var got Diagnostics 45 err = dec.Decode(&got) 46 if err != nil { 47 t.Fatalf("error on Decode: %s", err) 48 } 49 50 want := Diagnostics{ 51 &rpcFriendlyDiag{ 52 Severity_: Error, 53 Summary_: "bad", 54 }, 55 &rpcFriendlyDiag{ 56 Severity_: Warning, 57 Summary_: "less bad", 58 }, 59 &rpcFriendlyDiag{ 60 Severity_: Error, 61 Summary_: "bad bad bad", 62 Detail_: "badily bad bad", 63 Subject_: &SourceRange{ 64 Filename: "foo", 65 }, 66 Context_: &SourceRange{ 67 Filename: "bar", 68 }, 69 }, 70 } 71 72 if !reflect.DeepEqual(got, want) { 73 t.Errorf("wrong result\ngot: %swant: %s", spew.Sdump(got), spew.Sdump(want)) 74 } 75 }