github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/tfdiags/override_test.go (about) 1 package tfdiags 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/hcl/v2" 7 ) 8 9 func TestOverride_UpdatesSeverity(t *testing.T) { 10 original := Sourceless(Error, "summary", "detail") 11 override := Override(original, Warning, nil) 12 13 if override.Severity() != Warning { 14 t.Errorf("expected warning but was %s", override.Severity()) 15 } 16 } 17 18 func TestOverride_MaintainsExtra(t *testing.T) { 19 original := hclDiagnostic{&hcl.Diagnostic{ 20 Severity: hcl.DiagError, 21 Summary: "summary", 22 Detail: "detail", 23 Extra: "extra", 24 }} 25 override := Override(original, Warning, nil) 26 27 if override.ExtraInfo().(string) != "extra" { 28 t.Errorf("invalid extra info %v", override.ExtraInfo()) 29 } 30 } 31 32 func TestOverride_WrapsExtra(t *testing.T) { 33 original := hclDiagnostic{&hcl.Diagnostic{ 34 Severity: hcl.DiagError, 35 Summary: "summary", 36 Detail: "detail", 37 Extra: "extra", 38 }} 39 override := Override(original, Warning, func() DiagnosticExtraWrapper { 40 return &extraWrapper{ 41 mine: "mine", 42 } 43 }) 44 45 wrapper := override.ExtraInfo().(*extraWrapper) 46 if wrapper.mine != "mine" { 47 t.Errorf("invalid extra info %v", override.ExtraInfo()) 48 } 49 if wrapper.original.(string) != "extra" { 50 t.Errorf("invalid wrapped extra info %v", override.ExtraInfo()) 51 } 52 } 53 54 func TestUndoOverride(t *testing.T) { 55 original := Sourceless(Error, "summary", "detail") 56 override := Override(original, Warning, nil) 57 restored := UndoOverride(override) 58 59 if restored.Severity() != Error { 60 t.Errorf("expected warning but was %s", restored.Severity()) 61 } 62 } 63 64 func TestUndoOverride_NotOverridden(t *testing.T) { 65 original := Sourceless(Error, "summary", "detail") 66 restored := UndoOverride(original) // Shouldn't do anything bad. 67 68 if restored.Severity() != Error { 69 t.Errorf("expected warning but was %s", restored.Severity()) 70 } 71 } 72 73 type extraWrapper struct { 74 mine string 75 original interface{} 76 } 77 78 func (e *extraWrapper) WrapDiagnosticExtra(inner interface{}) { 79 e.original = inner 80 }