From 0e0b0d125a824624eba23b17a421056073aa8015 Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Fri, 7 Jul 2017 18:47:56 -0700 Subject: [PATCH] command/e2etest: "terraform version" test This basic test is here primarily because it's one of the few that can run without reaching out to external services, and so it means our usual test runs will catch situations where the main executable build is somehow broken. The version command itself is not very interesting to test, but it's convenient in that its behavior is very predictable and self-contained. --- command/e2etest/test-fixtures/empty/.exists | 0 command/e2etest/version_test.go | 35 +++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 command/e2etest/test-fixtures/empty/.exists create mode 100644 command/e2etest/version_test.go diff --git a/command/e2etest/test-fixtures/empty/.exists b/command/e2etest/test-fixtures/empty/.exists new file mode 100644 index 0000000000..e69de29bb2 diff --git a/command/e2etest/version_test.go b/command/e2etest/version_test.go new file mode 100644 index 0000000000..d8610e98bd --- /dev/null +++ b/command/e2etest/version_test.go @@ -0,0 +1,35 @@ +package e2etest + +import ( + "fmt" + "strings" + "testing" + + tfcore "github.com/hashicorp/terraform/terraform" +) + +func TestVersion(t *testing.T) { + // Along with testing the "version" command in particular, this serves + // as a good smoke test for whether the Terraform binary can even be + // compiled and run, since it doesn't require any external network access + // to do its job. + + t.Parallel() + + tf := newTerraform("empty") + defer tf.Close() + + stdout, stderr, err := tf.Run("version") + if err != nil { + t.Errorf("unexpected error: %s", err) + } + + if stderr != "" { + t.Errorf("unexpected stderr output:\n%s", stderr) + } + + wantVersion := fmt.Sprintf("Terraform %s", tfcore.VersionString()) + if strings.Contains(stdout, wantVersion) { + t.Errorf("output does not contain our current version %q:\n%s", wantVersion, stdout) + } +}