mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
terraform: tests passing for Config change
This commit is contained in:
parent
e4bcd3c448
commit
a19e2983de
@ -48,22 +48,24 @@ func (t *libuclConfigurable) Config() (*Config, error) {
|
|||||||
// TODO(mitchellh): Make function like loadVariablesLibucl so that
|
// TODO(mitchellh): Make function like loadVariablesLibucl so that
|
||||||
// duplicates aren't overriden
|
// duplicates aren't overriden
|
||||||
config := new(Config)
|
config := new(Config)
|
||||||
config.Variables = make([]*Variable, 0, len(rawConfig.Variable))
|
if len(rawConfig.Variable) > 0 {
|
||||||
for k, v := range rawConfig.Variable {
|
config.Variables = make([]*Variable, 0, len(rawConfig.Variable))
|
||||||
defaultSet := false
|
for k, v := range rawConfig.Variable {
|
||||||
for _, f := range v.Fields {
|
defaultSet := false
|
||||||
if f == "Default" {
|
for _, f := range v.Fields {
|
||||||
defaultSet = true
|
if f == "Default" {
|
||||||
break
|
defaultSet = true
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
config.Variables = append(config.Variables, &Variable{
|
config.Variables = append(config.Variables, &Variable{
|
||||||
Name: k,
|
Name: k,
|
||||||
Default: v.Default,
|
Default: v.Default,
|
||||||
Description: v.Description,
|
Description: v.Description,
|
||||||
defaultSet: defaultSet,
|
defaultSet: defaultSet,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build the provider configs
|
// Build the provider configs
|
||||||
|
@ -26,26 +26,28 @@ func Merge(c1, c2 *Config) (*Config, error) {
|
|||||||
|
|
||||||
// Merge variables: Variable merging is quite simple. Set fields in
|
// Merge variables: Variable merging is quite simple. Set fields in
|
||||||
// later set variables override those earlier.
|
// later set variables override those earlier.
|
||||||
c.Variables = make([]*Variable, 0, len(c1.Variables)+len(c2.Variables))
|
if len(c1.Variables) > 0 || len(c2.Variables) > 0 {
|
||||||
varMap := make(map[string]*Variable)
|
c.Variables = make([]*Variable, 0, len(c1.Variables)+len(c2.Variables))
|
||||||
for _, v := range c1.Variables {
|
varMap := make(map[string]*Variable)
|
||||||
varMap[v.Name] = v
|
for _, v := range c1.Variables {
|
||||||
}
|
varMap[v.Name] = v
|
||||||
for _, v2 := range c2.Variables {
|
|
||||||
v1, ok := varMap[v2.Name]
|
|
||||||
if ok {
|
|
||||||
if v2.Default == "" {
|
|
||||||
v2.Default = v1.Default
|
|
||||||
}
|
|
||||||
if v2.Description == "" {
|
|
||||||
v2.Description = v1.Description
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
for _, v2 := range c2.Variables {
|
||||||
|
v1, ok := varMap[v2.Name]
|
||||||
|
if ok {
|
||||||
|
if v2.Default == "" {
|
||||||
|
v2.Default = v1.Default
|
||||||
|
}
|
||||||
|
if v2.Description == "" {
|
||||||
|
v2.Description = v1.Description
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
varMap[v2.Name] = v2
|
varMap[v2.Name] = v2
|
||||||
}
|
}
|
||||||
for _, v := range varMap {
|
for _, v := range varMap {
|
||||||
c.Variables = append(c.Variables, v)
|
c.Variables = append(c.Variables, v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge outputs: If they collide, just take the latest one for now. In
|
// Merge outputs: If they collide, just take the latest one for now. In
|
||||||
|
@ -53,6 +53,8 @@ func TestReadWritePlan(t *testing.T) {
|
|||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println(reflect.DeepEqual(actual.Config.Variables, plan.Config.Variables))
|
||||||
|
|
||||||
if !reflect.DeepEqual(actual, plan) {
|
if !reflect.DeepEqual(actual, plan) {
|
||||||
t.Fatalf("bad: %#v", actual)
|
t.Fatalf("bad: %#v", actual)
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,9 @@ func smcUserVariables(c *config.Config, vs map[string]string) []error {
|
|||||||
|
|
||||||
// Check that all required variables are present
|
// Check that all required variables are present
|
||||||
required := make(map[string]struct{})
|
required := make(map[string]struct{})
|
||||||
for k, v := range c.Variables {
|
for _, v := range c.Variables {
|
||||||
if v.Required() {
|
if v.Required() {
|
||||||
required[k] = struct{}{}
|
required[v.Name] = struct{}{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for k, _ := range vs {
|
for k, _ := range vs {
|
||||||
|
Loading…
Reference in New Issue
Block a user