kubeform.dev/terraform-backend-sdk@v0.0.0-20220310143633-45f07fe731c5/terraform/transform_transitive_reduction_test.go (about)

     1  package terraform
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"kubeform.dev/terraform-backend-sdk/addrs"
     8  	"kubeform.dev/terraform-backend-sdk/configs/configschema"
     9  	"github.com/zclconf/go-cty/cty"
    10  )
    11  
    12  func TestTransitiveReductionTransformer(t *testing.T) {
    13  	mod := testModule(t, "transform-trans-reduce-basic")
    14  
    15  	g := Graph{Path: addrs.RootModuleInstance}
    16  	{
    17  		tf := &ConfigTransformer{Config: mod}
    18  		if err := tf.Transform(&g); err != nil {
    19  			t.Fatalf("err: %s", err)
    20  		}
    21  		t.Logf("graph after ConfigTransformer:\n%s", g.String())
    22  	}
    23  
    24  	{
    25  		transform := &AttachResourceConfigTransformer{Config: mod}
    26  		if err := transform.Transform(&g); err != nil {
    27  			t.Fatalf("err: %s", err)
    28  		}
    29  	}
    30  
    31  	{
    32  		transform := &AttachSchemaTransformer{
    33  			Plugins: schemaOnlyProvidersForTesting(map[addrs.Provider]*ProviderSchema{
    34  				addrs.NewDefaultProvider("aws"): {
    35  					ResourceTypes: map[string]*configschema.Block{
    36  						"aws_instance": {
    37  							Attributes: map[string]*configschema.Attribute{
    38  								"A": {
    39  									Type:     cty.String,
    40  									Optional: true,
    41  								},
    42  								"B": {
    43  									Type:     cty.String,
    44  									Optional: true,
    45  								},
    46  							},
    47  						},
    48  					},
    49  				},
    50  			}),
    51  		}
    52  		if err := transform.Transform(&g); err != nil {
    53  			t.Fatalf("err: %s", err)
    54  		}
    55  	}
    56  
    57  	{
    58  		transform := &ReferenceTransformer{}
    59  		if err := transform.Transform(&g); err != nil {
    60  			t.Fatalf("err: %s", err)
    61  		}
    62  		t.Logf("graph after ReferenceTransformer:\n%s", g.String())
    63  	}
    64  
    65  	{
    66  		transform := &TransitiveReductionTransformer{}
    67  		if err := transform.Transform(&g); err != nil {
    68  			t.Fatalf("err: %s", err)
    69  		}
    70  		t.Logf("graph after TransitiveReductionTransformer:\n%s", g.String())
    71  	}
    72  
    73  	actual := strings.TrimSpace(g.String())
    74  	expected := strings.TrimSpace(testTransformTransReduceBasicStr)
    75  	if actual != expected {
    76  		t.Errorf("wrong result\ngot:\n%s\n\nwant:\n%s", actual, expected)
    77  	}
    78  }
    79  
    80  const testTransformTransReduceBasicStr = `
    81  aws_instance.A
    82  aws_instance.B
    83    aws_instance.A
    84  aws_instance.C
    85    aws_instance.B
    86  `