github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/terraform/transform_targets_test.go (about) 1 package terraform 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestTargetsTransformer(t *testing.T) { 9 mod := testModule(t, "transform-targets-basic") 10 11 g := Graph{Path: RootModulePath} 12 { 13 tf := &ConfigTransformer{Module: mod} 14 if err := tf.Transform(&g); err != nil { 15 t.Fatalf("err: %s", err) 16 } 17 } 18 19 { 20 transform := &AttachResourceConfigTransformer{Module: mod} 21 if err := transform.Transform(&g); err != nil { 22 t.Fatalf("err: %s", err) 23 } 24 } 25 26 { 27 transform := &ReferenceTransformer{} 28 if err := transform.Transform(&g); err != nil { 29 t.Fatalf("err: %s", err) 30 } 31 } 32 33 { 34 transform := &TargetsTransformer{Targets: []string{"aws_instance.me"}} 35 if err := transform.Transform(&g); err != nil { 36 t.Fatalf("err: %s", err) 37 } 38 } 39 40 actual := strings.TrimSpace(g.String()) 41 expected := strings.TrimSpace(` 42 aws_instance.me 43 aws_subnet.me 44 aws_subnet.me 45 aws_vpc.me 46 aws_vpc.me 47 `) 48 if actual != expected { 49 t.Fatalf("bad:\n\nexpected:\n%s\n\ngot:\n%s\n", expected, actual) 50 } 51 } 52 53 func TestTargetsTransformer_downstream(t *testing.T) { 54 mod := testModule(t, "transform-targets-downstream") 55 56 g := Graph{Path: RootModulePath} 57 { 58 transform := &ConfigTransformer{Module: mod} 59 if err := transform.Transform(&g); err != nil { 60 t.Fatalf("%T failed: %s", transform, err) 61 } 62 } 63 64 { 65 transform := &AttachResourceConfigTransformer{Module: mod} 66 if err := transform.Transform(&g); err != nil { 67 t.Fatalf("%T failed: %s", transform, err) 68 } 69 } 70 71 { 72 transform := &AttachResourceConfigTransformer{Module: mod} 73 if err := transform.Transform(&g); err != nil { 74 t.Fatalf("%T failed: %s", transform, err) 75 } 76 } 77 78 { 79 transform := &OutputTransformer{Module: mod} 80 if err := transform.Transform(&g); err != nil { 81 t.Fatalf("%T failed: %s", transform, err) 82 } 83 } 84 85 { 86 transform := &ReferenceTransformer{} 87 if err := transform.Transform(&g); err != nil { 88 t.Fatalf("err: %s", err) 89 } 90 } 91 92 { 93 transform := &TargetsTransformer{Targets: []string{"module.child.module.grandchild.aws_instance.foo"}} 94 if err := transform.Transform(&g); err != nil { 95 t.Fatalf("%T failed: %s", transform, err) 96 } 97 } 98 99 actual := strings.TrimSpace(g.String()) 100 // Even though we only asked to target the grandchild resource, all of the 101 // outputs that descend from it are also targeted. 102 expected := strings.TrimSpace(` 103 module.child.module.grandchild.aws_instance.foo 104 module.child.module.grandchild.output.id 105 module.child.module.grandchild.aws_instance.foo 106 module.child.output.grandchild_id 107 module.child.module.grandchild.output.id 108 output.grandchild_id 109 module.child.output.grandchild_id 110 `) 111 if actual != expected { 112 t.Fatalf("bad:\n\nexpected:\n%s\n\ngot:\n%s\n", expected, actual) 113 } 114 } 115 116 func TestTargetsTransformer_destroy(t *testing.T) { 117 mod := testModule(t, "transform-targets-destroy") 118 119 g := Graph{Path: RootModulePath} 120 { 121 tf := &ConfigTransformer{Module: mod} 122 if err := tf.Transform(&g); err != nil { 123 t.Fatalf("err: %s", err) 124 } 125 } 126 127 { 128 transform := &AttachResourceConfigTransformer{Module: mod} 129 if err := transform.Transform(&g); err != nil { 130 t.Fatalf("err: %s", err) 131 } 132 } 133 134 { 135 transform := &ReferenceTransformer{} 136 if err := transform.Transform(&g); err != nil { 137 t.Fatalf("err: %s", err) 138 } 139 } 140 141 { 142 transform := &TargetsTransformer{ 143 Targets: []string{"aws_instance.me"}, 144 Destroy: true, 145 } 146 if err := transform.Transform(&g); err != nil { 147 t.Fatalf("err: %s", err) 148 } 149 } 150 151 actual := strings.TrimSpace(g.String()) 152 expected := strings.TrimSpace(` 153 aws_elb.me 154 aws_instance.me 155 aws_instance.me 156 aws_instance.metoo 157 aws_instance.me 158 `) 159 if actual != expected { 160 t.Fatalf("bad:\n\nexpected:\n%s\n\ngot:\n%s\n", expected, actual) 161 } 162 }