From feff252700021ecafc41fec7ce5cc5a7005e2bfe Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Thu, 10 May 2018 16:14:52 -0700 Subject: [PATCH] core: fix tests for checkInputVariables The contract for this function has changed as part of the 0.12 reorganization so that, while before it would accept a partial variables map if all missing variables were optional, it now expects that the caller has already collected values for all variables and is just checking them for type-correctness here. --- terraform/semantics_test.go | 38 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/terraform/semantics_test.go b/terraform/semantics_test.go index 8c1867c48..46346f2d3 100644 --- a/terraform/semantics_test.go +++ b/terraform/semantics_test.go @@ -9,36 +9,42 @@ import ( func TestSMCUserVariables(t *testing.T) { c := testModule(t, "smc-uservars") - // Required variables not set + // No variables set diags := checkInputVariables(c.Module.Variables, nil) if !diags.HasErrors() { t.Fatal("check succeeded, but want errors") } // Required variables set, optional variables unset + // This is still an error at this layer, since it's the caller's + // responsibility to have already merged in any default values. diags = checkInputVariables(c.Module.Variables, InputValues{ "foo": &InputValue{ Value: cty.StringVal("bar"), SourceType: ValueFromCLIArg, }, }) - if diags.HasErrors() { - t.Fatalf("unexpected errors: %s", diags.Err()) - } - - // Mapping complete override - diags = checkInputVariables(c.Module.Variables, InputValues{ - "foo": &InputValue{ - Value: cty.StringVal("bar"), - SourceType: ValueFromCLIArg, - }, - "map": &InputValue{ - Value: cty.StringVal("baz"), - SourceType: ValueFromCLIArg, - }, - }) if !diags.HasErrors() { t.Fatal("check succeeded, but want errors") } + // All variables set + diags = checkInputVariables(c.Module.Variables, InputValues{ + "foo": &InputValue{ + Value: cty.StringVal("bar"), + SourceType: ValueFromCLIArg, + }, + "bar": &InputValue{ + Value: cty.StringVal("baz"), + SourceType: ValueFromCLIArg, + }, + "map": &InputValue{ + Value: cty.StringVal("baz"), // okay because config has no type constraint + SourceType: ValueFromCLIArg, + }, + }) + if diags.HasErrors() { + //t.Fatal("check succeeded, but want errors") + t.Fatalf("unexpected errors: %s", diags.Err()) + } }