From b205ac2123159e0873edcf3a3057638636995f36 Mon Sep 17 00:00:00 2001 From: Paul Hinze Date: Mon, 23 May 2016 15:54:14 -0500 Subject: [PATCH] core: Another validate test for computed module var refs I wanted to make sure this case was handled, and it is! So here's an extra test for us. --- terraform/context_validate_test.go | 27 +++++++++++++++++++ .../dest/main.tf | 5 ++++ .../validate-computed-module-var-ref/main.tf | 8 ++++++ .../source/main.tf | 3 +++ 4 files changed, 43 insertions(+) create mode 100644 terraform/test-fixtures/validate-computed-module-var-ref/dest/main.tf create mode 100644 terraform/test-fixtures/validate-computed-module-var-ref/main.tf create mode 100644 terraform/test-fixtures/validate-computed-module-var-ref/source/main.tf diff --git a/terraform/context_validate_test.go b/terraform/context_validate_test.go index 3258c093a..56de23a36 100644 --- a/terraform/context_validate_test.go +++ b/terraform/context_validate_test.go @@ -776,3 +776,30 @@ func TestContext2Validate_interpolateVar(t *testing.T) { t.Fatal("err:", e) } } + +// When module vars reference something that is actually computed, this +// shouldn't cause validation to fail. +func TestContext2Validate_interpolateComputedModuleVarDef(t *testing.T) { + input := new(MockUIInput) + + m := testModule(t, "validate-computed-module-var-ref") + p := testProvider("aws") + p.ApplyFn = testApplyFn + p.DiffFn = testDiffFn + + ctx := testContext2(t, &ContextOpts{ + Module: m, + Providers: map[string]ResourceProviderFactory{ + "aws": testProviderFuncFixed(p), + }, + UIInput: input, + }) + + w, e := ctx.Validate() + if w != nil { + t.Log("warnings:", w) + } + if e != nil { + t.Fatal("err:", e) + } +} diff --git a/terraform/test-fixtures/validate-computed-module-var-ref/dest/main.tf b/terraform/test-fixtures/validate-computed-module-var-ref/dest/main.tf new file mode 100644 index 000000000..44095ea75 --- /dev/null +++ b/terraform/test-fixtures/validate-computed-module-var-ref/dest/main.tf @@ -0,0 +1,5 @@ +variable "destin" { } + +resource "aws_instance" "dest" { + attr = "${var.destin}" +} diff --git a/terraform/test-fixtures/validate-computed-module-var-ref/main.tf b/terraform/test-fixtures/validate-computed-module-var-ref/main.tf new file mode 100644 index 000000000..d7c799cc8 --- /dev/null +++ b/terraform/test-fixtures/validate-computed-module-var-ref/main.tf @@ -0,0 +1,8 @@ +module "source" { + source = "./source" +} + +module "dest" { + source = "./dest" + destin = "${module.source.sourceout}" +} diff --git a/terraform/test-fixtures/validate-computed-module-var-ref/source/main.tf b/terraform/test-fixtures/validate-computed-module-var-ref/source/main.tf new file mode 100644 index 000000000..f923e8080 --- /dev/null +++ b/terraform/test-fixtures/validate-computed-module-var-ref/source/main.tf @@ -0,0 +1,3 @@ +resource "aws_instance" "source" { } + +output "sourceout" { value = "${aws_instance.source.id}" }