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  }