From cfc7b69bb1a6cfe05cbbbeefdffb34b907a1b32d Mon Sep 17 00:00:00 2001 From: Armon Dadgar Date: Wed, 9 Jul 2014 10:36:49 -0700 Subject: [PATCH] terraform: Test provisioner apply --- terraform/context_test.go | 42 +++++++++++++++++++ terraform/terraform_test.go | 10 +++++ .../apply-provisioner-compute/main.tf | 11 +++++ 3 files changed, 63 insertions(+) create mode 100644 terraform/test-fixtures/apply-provisioner-compute/main.tf diff --git a/terraform/context_test.go b/terraform/context_test.go index 3b1310b477..906bff7d94 100644 --- a/terraform/context_test.go +++ b/terraform/context_test.go @@ -339,6 +339,48 @@ func TestContextApply_compute(t *testing.T) { } } +func TestContextApply_Provisioner_compute(t *testing.T) { + c := testConfig(t, "apply-provisioner-compute") + p := testProvider("aws") + pr := testProvisioner() + p.ApplyFn = testApplyFn + p.DiffFn = testDiffFn + pr.ApplyFn = func(rs *ResourceState, c *ResourceConfig) (*ResourceState, error) { + return rs, nil + } + ctx := testContext(t, &ContextOpts{ + Config: c, + Providers: map[string]ResourceProviderFactory{ + "aws": testProviderFuncFixed(p), + }, + Provisioners: map[string]ResourceProvisionerFactory{ + "shell": testProvisionerFuncFixed(pr), + }, + }) + + if _, err := ctx.Plan(nil); err != nil { + t.Fatalf("err: %s", err) + } + + ctx.variables = map[string]string{"value": "1"} + + state, err := ctx.Apply() + if err != nil { + t.Fatalf("err: %s", err) + } + + actual := strings.TrimSpace(state.String()) + expected := strings.TrimSpace(testTerraformApplyProvisionerStr) + if actual != expected { + t.Fatalf("bad: \n%s", actual) + } + + // Verify apply was invoked + if !pr.ApplyCalled { + t.Fatalf("provisioner not invoked") + } +} + func TestContextApply_destroy(t *testing.T) { c := testConfig(t, "apply-destroy") h := new(HookRecordApplyOrder) diff --git a/terraform/terraform_test.go b/terraform/terraform_test.go index 74a72a5cc2..203741ed71 100644 --- a/terraform/terraform_test.go +++ b/terraform/terraform_test.go @@ -120,6 +120,16 @@ aws_instance.foo: ID = foo ` +const testTerraformApplyProvisionerStr = ` +aws_instance.bar: + ID = foo +aws_instance.foo: + ID = foo + dynamical = computed_dynamical + num = 2 + type = aws_instance +` + const testTerraformApplyDestroyStr = ` ` diff --git a/terraform/test-fixtures/apply-provisioner-compute/main.tf b/terraform/test-fixtures/apply-provisioner-compute/main.tf new file mode 100644 index 0000000000..e0ff5507ae --- /dev/null +++ b/terraform/test-fixtures/apply-provisioner-compute/main.tf @@ -0,0 +1,11 @@ +resource "aws_instance" "foo" { + num = "2" + compute = "dynamical" + compute_value = "${var.value}" +} + +resource "aws_instance" "bar" { + provisioner "shell" { + foo = "${aws_instance.foo.dynamical}" + } +}