github.com/kanishk98/terraform@v1.3.0-dev.0.20220917174235-661ca8088a6a/internal/terraform/transform_transitive_reduction_test.go (about) 1 package terraform 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/hashicorp/terraform/internal/addrs" 8 "github.com/hashicorp/terraform/internal/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 `