make variable block implement MetaBlock itf

This commit is contained in:
Adrien Delorme
2022-03-22 14:14:58 +01:00
parent 8353b464ac
commit c8b69d0eee
6 changed files with 99 additions and 123 deletions
@@ -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"),
+2 -2
View File
@@ -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{
+3 -4
View File
@@ -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(),
}
+13 -13
View File
@@ -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"),
+39 -62
View File
@@ -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,
+39 -39
View File
@@ -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{