diff --git a/hcl2template/types.build.hcp_packer_registry_test.go b/hcl2template/types.build.hcp_packer_registry_test.go index 83f130d17..5f6fd754d 100644 --- a/hcl2template/types.build.hcp_packer_registry_test.go +++ b/hcl2template/types.build.hcp_packer_registry_test.go @@ -447,7 +447,7 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { "bucket": &Variable{ Name: "bucket", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("variable-bucket-slug")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("variable-bucket-slug")}}, }, }, Sources: map[SourceRef]SourceBlock{ @@ -511,12 +511,12 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { "bucket_labels": &Variable{ Name: "bucket_labels", ExpectedType: cty.Map(cty.String), - Values: []VariableAssignment{{From: "default", Value: cty.MapVal(map[string]cty.Value{"team": cty.StringVal("development")})}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.MapVal(map[string]cty.Value{"team": cty.StringVal("development")})}}, }, "build_labels": &Variable{ Name: "build_labels", ExpectedType: cty.Map(cty.String), - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.MapVal(map[string]cty.Value{ "packageA": cty.StringVal("v3.17.5"), diff --git a/hcl2template/types.build_test.go b/hcl2template/types.build_test.go index bfd8824cf..b2df0f2ab 100644 --- a/hcl2template/types.build_test.go +++ b/hcl2template/types.build_test.go @@ -483,14 +483,14 @@ func TestParse_build(t *testing.T) { "name": &Variable{ Name: "name", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("build-name")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("build-name")}}, }, }, LocalVariables: Variables{ "description": &Variable{ Name: "description", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("This is the description for build-name.")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("This is the description for build-name.")}}, }, }, Sources: map[SourceRef]SourceBlock{ diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 7016cf6a6..8558add3b 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -286,10 +286,9 @@ func (c *PackerConfig) evaluateLocalVariable(local *LocalBlock) hcl.Diagnostics c.LocalVariables[local.Name] = &Variable{ Name: local.Name, Sensitive: local.Sensitive, - Values: []VariableAssignment{{ - Value: value, - Expr: local.Expr, - From: "default", + Assignments: []VariableAssignment{{ + Expr: local.Expr, + From: "default", }}, ExpectedType: value.Type(), } diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 0aaddc5ca..4e6ae5887 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -47,22 +47,22 @@ func TestParser_complete(t *testing.T) { InputVariables: Variables{ "foo": &Variable{ Name: "foo", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, ExpectedType: cty.String, }, "image_id": &Variable{ Name: "image_id", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, ExpectedType: cty.String, }, "port": &Variable{ Name: "port", - Values: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, ExpectedType: cty.Number, }, "availability_zone_names": &Variable{ Name: "availability_zone_names", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.ListVal([]cty.Value{ cty.StringVal("A"), @@ -76,17 +76,17 @@ func TestParser_complete(t *testing.T) { LocalVariables: Variables{ "feefoo": &Variable{ Name: "feefoo", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("value_image-id-default")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("value_image-id-default")}}, ExpectedType: cty.String, }, "data_source": &Variable{ Name: "data_source", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("string")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("string")}}, ExpectedType: cty.String, }, "standard_tags": &Variable{ Name: "standard_tags", - Values: []VariableAssignment{{From: "default", + Assignments: []VariableAssignment{{From: "default", Value: cty.ObjectVal(map[string]cty.Value{ "Component": cty.StringVal("user-service"), "Environment": cty.StringVal("production"), @@ -99,7 +99,7 @@ func TestParser_complete(t *testing.T) { }, "abc_map": &Variable{ Name: "abc_map", - Values: []VariableAssignment{{From: "default", + Assignments: []VariableAssignment{{From: "default", Value: cty.TupleVal([]cty.Value{ cty.ObjectVal(map[string]cty.Value{ "id": cty.StringVal("a"), @@ -126,7 +126,7 @@ func TestParser_complete(t *testing.T) { }, "supersecret": &Variable{ Name: "supersecret", - Values: []VariableAssignment{{From: "default", + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default-password")}}, ExpectedType: cty.String, Sensitive: true, @@ -546,22 +546,22 @@ func TestParser_no_init(t *testing.T) { InputVariables: Variables{ "foo": &Variable{ Name: "foo", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, ExpectedType: cty.String, }, "image_id": &Variable{ Name: "image_id", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, ExpectedType: cty.String, }, "port": &Variable{ Name: "port", - Values: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, ExpectedType: cty.Number, }, "availability_zone_names": &Variable{ Name: "availability_zone_names", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.ListVal([]cty.Value{ cty.StringVal("A"), diff --git a/hcl2template/types.variables.go b/hcl2template/types.variables.go index 11031f554..bbac73bb5 100644 --- a/hcl2template/types.variables.go +++ b/hcl2template/types.variables.go @@ -40,20 +40,20 @@ type VariableAssignment struct { } type Variable struct { - // Values contains possible values for the variable; The last value set + // Assignments contains possible values for the variable; The last value set // from these will be the one used. If none is set; an error will be // returned by Value(). - Values []VariableAssignment + Assignments []VariableAssignment // Validations contains all variables validation rules to be applied to the // used value. Only the used value - the last value from Values - is // validated. Validations []*VariableValidation - // ExpectedType of the variable. If the default value or a collected - // value is not of this type nor can be converted to this type an error - // diagnostic will show up. This allows us to assume that values are valid - // later in code. + // ExpectedType of the variable. If the default value or a collected value + // is not of this type nor can be converted to this type an error diagnostic + // will show up. This allows us to assume that values are valid later in + // code. ExpectedType cty.Type // Common name of the variable Name string @@ -70,28 +70,31 @@ func (v *Variable) Type() cty.Type { return v.ExpectedType } +func (v *Variable) Evaluate(ectx *hcl.EvalContext) hcl.Diagnostics { + var diags hcl.Diagnostics + for _, assignment := range v.Assignments { + val, moreDiags := assignment.Expr.Value(ectx) + diags = append(diags, moreDiags...) + assignment.Value = val + } + return diags +} + func (v *Variable) References() ([]*addrs.Reference, hcl.Diagnostics) { - if len(v.Values) == 0 { + if len(v.Assignments) == 0 { return nil, nil } refs := []*addrs.Reference{} var diags hcl.Diagnostics - for _, v := range v.Values[len(v.Values)-1].Expr.Variables() { - ref, moreDiags := addrs.ParseRef(v) - diags = append(diags, moreDiags...) - refs = append(refs, ref) + for _, assignment := range v.Assignments { + for _, v := range assignment.Expr.Variables() { + ref, moreDiags := addrs.ParseRef(v) + diags = append(diags, moreDiags...) + refs = append(refs, ref) + } } return refs, diags } -func (v *Variable) GoString() string { - b := &strings.Builder{} - fmt.Fprintf(b, "{type:%s", v.ExpectedType.GoString()) - for _, vv := range v.Values { - fmt.Fprintf(b, ",%s:%s", vv.From, vv.Value) - } - fmt.Fprintf(b, "}") - return b.String() -} // validateValue ensures that all of the configured custom validations for a // variable value are passing. @@ -166,17 +169,16 @@ func (v *Variable) validateValue(val VariableAssignment) (diags hcl.Diagnostics) // Value returns the last found value from the list of variable settings. func (v *Variable) Value() cty.Value { - if len(v.Values) == 0 { + if len(v.Assignments) == 0 { return cty.UnknownVal(v.ExpectedType) } - val := v.Values[len(v.Values)-1] + val := v.Assignments[len(v.Assignments)-1] return val.Value } -// Validate tells if the selected value for the Variable is set and valid -// according to its validation settings. +// Validate runs validation rules on the variable assignments. func (v *Variable) Validate() hcl.Diagnostics { - if len(v.Values) == 0 { + if len(v.Assignments) == 0 { return hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: fmt.Sprintf("Unset variable %q", v.Name), @@ -187,7 +189,11 @@ func (v *Variable) Validate() hcl.Diagnostics { }} } - return v.validateValue(v.Values[len(v.Values)-1]) + var diags hcl.Diagnostics + for _, assignment := range v.Assignments { + diags = append(diags, v.validateValue(assignment)...) + } + return diags } type Variables map[string]*Variable @@ -243,7 +249,7 @@ func (variables *Variables) decodeVariablesSetting(key string, attr *hcl.Attribu (*variables)[key] = &Variable{ Name: key, - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: defaultValue, Expr: attr.Expr, @@ -372,39 +378,10 @@ func (variables *Variables) decodeVariableBlock(block *hcl.Block, ectx *hcl.Eval } if def, ok := content.Attributes["default"]; ok { - defaultValue, moreDiags := def.Expr.Value(ectx) - diags = append(diags, moreDiags...) - if moreDiags.HasErrors() { - return diags - } - - if v.ExpectedType != cty.NilType { - var err error - defaultValue, err = convert.Convert(defaultValue, v.ExpectedType) - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Invalid default value for variable", - Detail: fmt.Sprintf("This default value is not compatible with the variable's type constraint: %s.", err), - Subject: def.Expr.Range().Ptr(), - }) - defaultValue = cty.DynamicVal - } - } - - v.Values = append(v.Values, VariableAssignment{ - From: "default", - Value: defaultValue, - Expr: def.Expr, + v.Assignments = append(v.Assignments, VariableAssignment{ + From: "default", + Expr: def.Expr, }) - - // It's possible no type attribute was assigned so lets make sure we - // have a valid type otherwise there could be issues parsing the value. - if v.ExpectedType == cty.DynamicPseudoType && - !defaultValue.Type().Equals(cty.EmptyObject) && - !defaultValue.Type().Equals(cty.EmptyTuple) { - v.ExpectedType = defaultValue.Type() - } } for _, block := range content.Blocks { @@ -618,7 +595,7 @@ func (cfg *PackerConfig) collectInputVariableValues(env []string, files []*hcl.F val = cty.DynamicVal } } - variable.Values = append(variable.Values, VariableAssignment{ + variable.Assignments = append(variable.Assignments, VariableAssignment{ From: "env", Value: val, Expr: expr, @@ -706,7 +683,7 @@ func (cfg *PackerConfig) collectInputVariableValues(env []string, files []*hcl.F } } - variable.Values = append(variable.Values, VariableAssignment{ + variable.Assignments = append(variable.Assignments, VariableAssignment{ From: "varfile", Value: val, Expr: attr.Expr, @@ -754,7 +731,7 @@ func (cfg *PackerConfig) collectInputVariableValues(env []string, files []*hcl.F } } - variable.Values = append(variable.Values, VariableAssignment{ + variable.Assignments = append(variable.Assignments, VariableAssignment{ From: "cmd", Value: val, Expr: expr, diff --git a/hcl2template/types.variables_test.go b/hcl2template/types.variables_test.go index 8eac44d74..a27f97597 100644 --- a/hcl2template/types.variables_test.go +++ b/hcl2template/types.variables_test.go @@ -29,31 +29,31 @@ func TestParse_variables(t *testing.T) { "image_name": &Variable{ Name: "image_name", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo-image-{{user `my_secret`}}")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo-image-{{user `my_secret`}}")}}, }, "key": &Variable{ Name: "key", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("value")}}, }, "my_secret": &Variable{ Name: "my_secret", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, }, "image_id": &Variable{ Name: "image_id", ExpectedType: cty.String, - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("image-id-default")}}, }, "port": &Variable{ Name: "port", ExpectedType: cty.Number, - Values: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.NumberIntVal(42)}}, }, "availability_zone_names": &Variable{ Name: "availability_zone_names", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.ListVal([]cty.Value{ cty.StringVal("us-west-1a"), @@ -65,7 +65,7 @@ func TestParse_variables(t *testing.T) { "super_secret_password": &Variable{ Name: "super_secret_password", Sensitive: true, - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.NullVal(cty.String), }}, @@ -76,7 +76,7 @@ func TestParse_variables(t *testing.T) { LocalVariables: Variables{ "owner": &Variable{ Name: "owner", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.StringVal("Community Team"), }}, @@ -84,7 +84,7 @@ func TestParse_variables(t *testing.T) { }, "service_name": &Variable{ Name: "service_name", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.StringVal("forum"), }}, @@ -92,7 +92,7 @@ func TestParse_variables(t *testing.T) { }, "supersecret": &Variable{ Name: "supersecret", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.StringVal("secretvar"), }}, @@ -114,7 +114,7 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "boolean_value": &Variable{ Name: "boolean_value", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.BoolVal(false), }}, @@ -135,7 +135,7 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "boolean_value": &Variable{ Name: "boolean_value", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.BoolVal(false), }}, @@ -155,7 +155,7 @@ func TestParse_variables(t *testing.T) { Basedir: "testdata/variables/duplicate_locals", LocalVariables: Variables{ "sensible": &Variable{ - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ { From: "default", Value: cty.StringVal("something"), @@ -179,7 +179,7 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "broken_type": &Variable{ Name: "broken_type", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.UnknownVal(cty.DynamicPseudoType), }}, @@ -201,7 +201,7 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "broken_variable": &Variable{ Name: "broken_variable", - Values: []VariableAssignment{{From: "default", Value: cty.BoolVal(true)}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.BoolVal(true)}}, ExpectedType: cty.Bool, }, }, @@ -279,34 +279,34 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "name_prefix": &Variable{ Name: "name_prefix", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, ExpectedType: cty.String, }, }, LocalVariables: Variables{ "name_prefix": &Variable{ Name: "name_prefix", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, ExpectedType: cty.String, }, "foo": &Variable{ Name: "foo", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, ExpectedType: cty.String, }, "bar": &Variable{ Name: "bar", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, ExpectedType: cty.String, }, "for_var": &Variable{ Name: "for_var", - Values: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, + Assignments: []VariableAssignment{{From: "default", Value: cty.StringVal("foo")}}, ExpectedType: cty.String, }, "bar_var": &Variable{ Name: "bar_var", - Values: []VariableAssignment{{ + Assignments: []VariableAssignment{{ From: "default", Value: cty.TupleVal([]cty.Value{ cty.StringVal("foo"), @@ -348,7 +348,7 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "foo": &Variable{ Name: "foo", - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ VariableAssignment{"default", cty.StringVal("bar"), nil}, VariableAssignment{"varfile", cty.StringVal("wee"), nil}, }, @@ -382,12 +382,12 @@ func TestParse_variables(t *testing.T) { InputVariables: Variables{ "max_retries": &Variable{ Name: "max_retries", - Values: []VariableAssignment{{"default", cty.StringVal("1"), nil}}, + Assignments: []VariableAssignment{{"default", cty.StringVal("1"), nil}}, ExpectedType: cty.String, }, "max_retries_int": &Variable{ Name: "max_retries_int", - Values: []VariableAssignment{{"default", cty.NumberIntVal(1), nil}}, + Assignments: []VariableAssignment{{"default", cty.NumberIntVal(1), nil}}, ExpectedType: cty.Number, }, }, @@ -470,7 +470,7 @@ func TestParse_variables(t *testing.T) { Basedir: filepath.Join("testdata", "variables", "validation"), InputVariables: Variables{ "image_id": &Variable{ - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.StringVal("ami-something-something"), nil}, }, Name: "image_id", @@ -496,7 +496,7 @@ func TestParse_variables(t *testing.T) { Basedir: filepath.Join("testdata", "variables", "validation"), InputVariables: Variables{ "image_id": &Variable{ - Values: []VariableAssignment{{"default", cty.StringVal("potato"), nil}}, + Assignments: []VariableAssignment{{"default", cty.StringVal("potato"), nil}}, Name: "image_id", ExpectedType: cty.String, Validations: []*VariableValidation{ @@ -534,7 +534,7 @@ func TestVariables_collectVariableValues(t *testing.T) { {name: "string", variables: Variables{"used_string": &Variable{ - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.StringVal("default_value"), nil}, }, ExpectedType: cty.String, @@ -555,7 +555,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_string": &Variable{ ExpectedType: cty.String, - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.StringVal(`default_value`), nil}, {"env", cty.StringVal(`env_value`), nil}, {"varfile", cty.StringVal(`xy`), nil}, @@ -571,7 +571,7 @@ func TestVariables_collectVariableValues(t *testing.T) { {name: "quoted string", variables: Variables{"quoted_string": &Variable{ - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.StringVal(`"default_value"`), nil}, }, ExpectedType: cty.String, @@ -592,7 +592,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "quoted_string": &Variable{ ExpectedType: cty.String, - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.StringVal(`"default_value"`), nil}, {"env", cty.StringVal(`"env_value"`), nil}, {"varfile", cty.StringVal(`"xy"`), nil}, @@ -608,7 +608,7 @@ func TestVariables_collectVariableValues(t *testing.T) { {name: "array of strings", variables: Variables{"used_strings": &Variable{ - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", stringListVal("default_value_1"), nil}, }, ExpectedType: cty.List(cty.String), @@ -629,7 +629,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_strings": &Variable{ ExpectedType: cty.List(cty.String), - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", stringListVal("default_value_1"), nil}, {"env", stringListVal("env_value_1", "env_value_2"), nil}, {"varfile", stringListVal("xy"), nil}, @@ -645,7 +645,7 @@ func TestVariables_collectVariableValues(t *testing.T) { {name: "bool", variables: Variables{"enabled": &Variable{ - Values: []VariableAssignment{{"default", cty.False, nil}}, + Assignments: []VariableAssignment{{"default", cty.False, nil}}, ExpectedType: cty.Bool, }}, args: args{ @@ -663,7 +663,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "enabled": &Variable{ ExpectedType: cty.Bool, - Values: []VariableAssignment{ + Assignments: []VariableAssignment{ {"default", cty.False, nil}, {"env", cty.True, nil}, {"varfile", cty.False, nil}, @@ -678,7 +678,7 @@ func TestVariables_collectVariableValues(t *testing.T) { {name: "invalid env var", variables: Variables{"used_string": &Variable{ - Values: []VariableAssignment{{"default", cty.StringVal("default_value"), nil}}, + Assignments: []VariableAssignment{{"default", cty.StringVal("default_value"), nil}}, ExpectedType: cty.String, }}, args: args{ @@ -690,7 +690,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_string": &Variable{ ExpectedType: cty.String, - Values: []VariableAssignment{{"default", cty.StringVal("default_value"), nil}}, + Assignments: []VariableAssignment{{"default", cty.StringVal("default_value"), nil}}, }, }, wantValues: map[string]cty.Value{ @@ -770,7 +770,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_string": &Variable{ ExpectedType: cty.List(cty.String), - Values: []VariableAssignment{{"env", cty.DynamicVal, nil}}, + Assignments: []VariableAssignment{{"env", cty.DynamicVal, nil}}, }, }, wantValues: map[string]cty.Value{ @@ -794,7 +794,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_string": &Variable{ ExpectedType: cty.Bool, - Values: []VariableAssignment{{"varfile", cty.DynamicVal, nil}}, + Assignments: []VariableAssignment{{"varfile", cty.DynamicVal, nil}}, }, }, wantValues: map[string]cty.Value{ @@ -820,7 +820,7 @@ func TestVariables_collectVariableValues(t *testing.T) { wantVariables: Variables{ "used_string": &Variable{ ExpectedType: cty.Bool, - Values: []VariableAssignment{{"cmd", cty.DynamicVal, nil}}, + Assignments: []VariableAssignment{{"cmd", cty.DynamicVal, nil}}, }, }, wantValues: map[string]cty.Value{