From 2cffa25235b07ef997821b54634e31c3f6fba5ab Mon Sep 17 00:00:00 2001 From: James Bardin Date: Mon, 27 Mar 2017 18:39:18 -0400 Subject: [PATCH] Add test to verify that Validation isn't called The apply won't succeed because we don't have a valid plan, but this verifies that providing a plan file prevents Validation. --- command/apply_test.go | 33 +++++++++++++++++++ .../apply-plan-no-module/main.tf | 7 ++++ 2 files changed, 40 insertions(+) create mode 100644 command/test-fixtures/apply-plan-no-module/main.tf diff --git a/command/apply_test.go b/command/apply_test.go index 01c230326..661d88c76 100644 --- a/command/apply_test.go +++ b/command/apply_test.go @@ -802,6 +802,39 @@ func TestApply_planVars(t *testing.T) { } } +// we should be able to apply a plan file with no other file dependencies +func TestApply_planNoModuleFiles(t *testing.T) { + // temprary data directory which we can remove between commands + td, err := ioutil.TempDir("", "tf") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(td) + + defer testChdir(t, td)() + + p := testProvider() + planFile := testPlanFile(t, &terraform.Plan{ + Module: testModule(t, "apply-plan-no-module"), + }) + + contextOpts := testCtxConfig(p) + + apply := &ApplyCommand{ + Meta: Meta{ + ContextOpts: contextOpts, + Ui: new(cli.MockUi), + }, + } + args := []string{ + planFile, + } + apply.Run(args) + if p.ValidateCalled { + t.Fatal("Validate should not be called with a plan") + } +} + func TestApply_refresh(t *testing.T) { originalState := &terraform.State{ Modules: []*terraform.ModuleState{ diff --git a/command/test-fixtures/apply-plan-no-module/main.tf b/command/test-fixtures/apply-plan-no-module/main.tf new file mode 100644 index 000000000..deea30d66 --- /dev/null +++ b/command/test-fixtures/apply-plan-no-module/main.tf @@ -0,0 +1,7 @@ +resource "test_instance" "tmpl" { + foo = "${file("${path.module}/template.txt")}" +} + +output "template" { + value = "${test_instance.tmpl.foo}" +}