From b9b418bcb02959e673def7de51d093c2b83c80d2 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Fri, 10 Nov 2017 09:39:05 -0500 Subject: [PATCH] test passing in implicitly used provider --- .../main.tf | 10 ++++++ .../mod/main.tf | 2 ++ terraform/transform_provider_test.go | 34 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 terraform/test-fixtures/transform-provider-implicit-module/main.tf create mode 100644 terraform/test-fixtures/transform-provider-implicit-module/mod/main.tf diff --git a/terraform/test-fixtures/transform-provider-implicit-module/main.tf b/terraform/test-fixtures/transform-provider-implicit-module/main.tf new file mode 100644 index 0000000000..97d73f24dc --- /dev/null +++ b/terraform/test-fixtures/transform-provider-implicit-module/main.tf @@ -0,0 +1,10 @@ +provider "aws" { + alias = "foo" +} + +module "mod" { + source = "./mod" + providers = { + "aws" = "aws.foo" + } +} diff --git a/terraform/test-fixtures/transform-provider-implicit-module/mod/main.tf b/terraform/test-fixtures/transform-provider-implicit-module/mod/main.tf new file mode 100644 index 0000000000..01cf0803c0 --- /dev/null +++ b/terraform/test-fixtures/transform-provider-implicit-module/mod/main.tf @@ -0,0 +1,2 @@ +resource "aws_instance" "bar" { +} diff --git a/terraform/transform_provider_test.go b/terraform/transform_provider_test.go index f4277060a6..c6698b382f 100644 --- a/terraform/transform_provider_test.go +++ b/terraform/transform_provider_test.go @@ -511,6 +511,40 @@ func TestProviderConfigTransformer_grandparentProviders(t *testing.T) { } } +// pass a specific provider into a module using it implicitly +func TestProviderConfigTransformer_implicitModule(t *testing.T) { + mod := testModule(t, "transform-provider-implicit-module") + concrete := func(a *NodeAbstractProvider) dag.Vertex { return a } + + g := Graph{Path: RootModulePath} + { + tf := &ConfigTransformer{Module: mod} + if err := tf.Transform(&g); err != nil { + t.Fatalf("err: %s", err) + } + } + { + tf := &AttachResourceConfigTransformer{Module: mod} + if err := tf.Transform(&g); err != nil { + t.Fatalf("err: %s", err) + } + } + { + tf := TransformProviders([]string{"aws"}, concrete, mod) + if err := tf.Transform(&g); err != nil { + t.Fatalf("err: %s", err) + } + } + + actual := strings.TrimSpace(g.String()) + expected := strings.TrimSpace(`module.mod.aws_instance.bar + provider.aws.foo +provider.aws.foo`) + if actual != expected { + t.Fatalf("expected:\n%s\n\ngot:\n%s", expected, actual) + } +} + const testTransformProviderBasicStr = ` aws_instance.web provider.aws