From 076c5400768edf249e2c78a4930bc8bb889f6587 Mon Sep 17 00:00:00 2001 From: Pam Selle <204372+pselle@users.noreply.github.com> Date: Fri, 6 Mar 2020 16:07:57 -0500 Subject: [PATCH] Add a test for whole module targeting --- terraform/transform_targets_test.go | 71 +++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/terraform/transform_targets_test.go b/terraform/transform_targets_test.go index f29109af43..02ea58d463 100644 --- a/terraform/transform_targets_test.go +++ b/terraform/transform_targets_test.go @@ -130,6 +130,77 @@ output.grandchild_id } } +// This tests the TargetsTransformer targeting a whole module, +// rather than a resource within a module instance. +func TestTargetsTransformer_wholeModule(t *testing.T) { + mod := testModule(t, "transform-targets-downstream") + + g := Graph{Path: addrs.RootModuleInstance} + { + transform := &ConfigTransformer{Config: mod} + if err := transform.Transform(&g); err != nil { + t.Fatalf("%T failed: %s", transform, err) + } + } + + { + transform := &AttachResourceConfigTransformer{Config: mod} + if err := transform.Transform(&g); err != nil { + t.Fatalf("%T failed: %s", transform, err) + } + } + + { + transform := &AttachResourceConfigTransformer{Config: mod} + if err := transform.Transform(&g); err != nil { + t.Fatalf("%T failed: %s", transform, err) + } + } + + { + transform := &OutputTransformer{Config: mod} + if err := transform.Transform(&g); err != nil { + t.Fatalf("%T failed: %s", transform, err) + } + } + + { + transform := &ReferenceTransformer{} + if err := transform.Transform(&g); err != nil { + t.Fatalf("err: %s", err) + } + } + + { + transform := &TargetsTransformer{ + Targets: []addrs.Targetable{ + addrs.RootModule. + Child("child"). + Child("grandchild"), + }, + } + if err := transform.Transform(&g); err != nil { + t.Fatalf("%T failed: %s", transform, err) + } + } + + actual := strings.TrimSpace(g.String()) + // Even though we only asked to target the grandchild module, all of the + // outputs that descend from it are also targeted. + expected := strings.TrimSpace(` +module.child.module.grandchild.aws_instance.foo +module.child.module.grandchild.output.id + module.child.module.grandchild.aws_instance.foo +module.child.output.grandchild_id + module.child.module.grandchild.output.id +output.grandchild_id + module.child.output.grandchild_id + `) + if actual != expected { + t.Fatalf("bad:\n\nexpected:\n%s\n\ngot:\n%s\n", expected, actual) + } +} + func TestTargetsTransformer_destroy(t *testing.T) { mod := testModule(t, "transform-targets-destroy")