Merge pull request #19409 from hashicorp/jbardin/terraform-tests
fixes for the remaining tests
This commit is contained in:
commit
407fcc0385
|
@ -662,7 +662,7 @@ func TestNormalizeFlatmapContainers(t *testing.T) {
|
|||
expect: map[string]string{"id": "78629a0f5f3f164f"},
|
||||
},
|
||||
{
|
||||
attrs: map[string]string{"set.2.required": "bar", "set.2.list.#": "1", "set.2.list.0": "x", "set.1.list.#": "0"},
|
||||
attrs: map[string]string{"set.2.required": "bar", "set.2.list.#": "1", "set.2.list.0": "x", "set.1.list.#": "0", "set.#": "2"},
|
||||
expect: map[string]string{"set.2.list.#": "1", "set.2.list.0": "x", "set.2.required": "bar", "set.#": "1"},
|
||||
},
|
||||
} {
|
||||
|
|
|
@ -164,11 +164,16 @@ func (m *Module) testString() string {
|
|||
}
|
||||
}
|
||||
attrKeys := make([]string, 0, len(attributes))
|
||||
for ak, _ := range attributes {
|
||||
for ak, val := range attributes {
|
||||
if ak == "id" {
|
||||
continue
|
||||
}
|
||||
|
||||
// don't show empty containers in the output
|
||||
if val == "0" && (strings.HasSuffix(ak, ".#") || strings.HasSuffix(ak, ".%")) {
|
||||
continue
|
||||
}
|
||||
|
||||
attrKeys = append(attrKeys, ak)
|
||||
}
|
||||
|
||||
|
|
|
@ -2075,7 +2075,56 @@ func TestContext2Plan_computedList(t *testing.T) {
|
|||
},
|
||||
},
|
||||
}
|
||||
p.DiffFn = testDiffFn
|
||||
p.DiffFn = func(info *InstanceInfo, s *InstanceState, c *ResourceConfig) (*InstanceDiff, error) {
|
||||
diff := &InstanceDiff{
|
||||
Attributes: map[string]*ResourceAttrDiff{},
|
||||
}
|
||||
|
||||
computedKeys := map[string]bool{}
|
||||
for _, k := range c.ComputedKeys {
|
||||
computedKeys[k] = true
|
||||
}
|
||||
|
||||
compute, _ := c.Raw["compute"].(string)
|
||||
if compute != "" {
|
||||
diff.Attributes[compute] = &ResourceAttrDiff{
|
||||
Old: "",
|
||||
New: "",
|
||||
NewComputed: true,
|
||||
}
|
||||
}
|
||||
|
||||
fooOld := s.Attributes["foo"]
|
||||
fooNew, _ := c.Raw["foo"].(string)
|
||||
if fooOld != fooNew {
|
||||
diff.Attributes["foo"] = &ResourceAttrDiff{
|
||||
Old: fooOld,
|
||||
New: fooNew,
|
||||
NewComputed: computedKeys["foo"],
|
||||
}
|
||||
}
|
||||
|
||||
numOld := s.Attributes["num"]
|
||||
numNew, _ := c.Raw["num"].(string)
|
||||
if numOld != numNew {
|
||||
diff.Attributes["num"] = &ResourceAttrDiff{
|
||||
Old: numOld,
|
||||
New: numNew,
|
||||
NewComputed: computedKeys["num"],
|
||||
}
|
||||
}
|
||||
|
||||
listOld := s.Attributes["list.#"]
|
||||
if listOld == "" {
|
||||
diff.Attributes["list.#"] = &ResourceAttrDiff{
|
||||
Old: "",
|
||||
New: "",
|
||||
NewComputed: true,
|
||||
}
|
||||
}
|
||||
|
||||
return diff, nil
|
||||
}
|
||||
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Config: m,
|
||||
|
@ -2110,6 +2159,7 @@ func TestContext2Plan_computedList(t *testing.T) {
|
|||
switch i := ric.Addr.String(); i {
|
||||
case "aws_instance.bar":
|
||||
checkVals(t, objectVal(t, schema, map[string]cty.Value{
|
||||
"list": cty.UnknownVal(cty.List(cty.String)),
|
||||
"foo": cty.UnknownVal(cty.String),
|
||||
}), ric.After)
|
||||
case "aws_instance.foo":
|
||||
|
@ -2129,6 +2179,7 @@ func TestContext2Plan_computedMultiIndex(t *testing.T) {
|
|||
m := testModule(t, "plan-computed-multi-index")
|
||||
p := testProvider("aws")
|
||||
p.DiffFn = testDiffFn
|
||||
|
||||
p.GetSchemaReturn = &ProviderSchema{
|
||||
ResourceTypes: map[string]*configschema.Block{
|
||||
"aws_instance": {
|
||||
|
@ -2141,6 +2192,47 @@ func TestContext2Plan_computedMultiIndex(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
p.DiffFn = func(info *InstanceInfo, s *InstanceState, c *ResourceConfig) (*InstanceDiff, error) {
|
||||
diff := &InstanceDiff{
|
||||
Attributes: map[string]*ResourceAttrDiff{},
|
||||
}
|
||||
|
||||
compute, _ := c.Raw["compute"].(string)
|
||||
if compute != "" {
|
||||
diff.Attributes[compute] = &ResourceAttrDiff{
|
||||
Old: "",
|
||||
New: "",
|
||||
NewComputed: true,
|
||||
}
|
||||
}
|
||||
|
||||
fooOld := s.Attributes["foo"]
|
||||
fooNew, _ := c.Raw["foo"].(string)
|
||||
fooComputed := false
|
||||
for _, k := range c.ComputedKeys {
|
||||
if k == "foo" {
|
||||
fooComputed = true
|
||||
}
|
||||
}
|
||||
if fooNew != "" {
|
||||
diff.Attributes["foo"] = &ResourceAttrDiff{
|
||||
Old: fooOld,
|
||||
New: fooNew,
|
||||
NewComputed: fooComputed,
|
||||
}
|
||||
}
|
||||
|
||||
ipOld := s.Attributes["ip"]
|
||||
ipComputed := ipOld == ""
|
||||
diff.Attributes["ip"] = &ResourceAttrDiff{
|
||||
Old: ipOld,
|
||||
New: "",
|
||||
NewComputed: ipComputed,
|
||||
}
|
||||
|
||||
return diff, nil
|
||||
}
|
||||
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Config: m,
|
||||
ProviderResolver: providers.ResolverFixed(
|
||||
|
@ -2175,13 +2267,16 @@ func TestContext2Plan_computedMultiIndex(t *testing.T) {
|
|||
case "aws_instance.foo[0]":
|
||||
checkVals(t, objectVal(t, schema, map[string]cty.Value{
|
||||
"ip": cty.UnknownVal(cty.List(cty.String)),
|
||||
"foo": cty.ListValEmpty(cty.String),
|
||||
}), ric.After)
|
||||
case "aws_instance.foo[1]":
|
||||
checkVals(t, objectVal(t, schema, map[string]cty.Value{
|
||||
"ip": cty.UnknownVal(cty.List(cty.String)),
|
||||
"foo": cty.ListValEmpty(cty.String),
|
||||
}), ric.After)
|
||||
case "aws_instance.bar[0]":
|
||||
checkVals(t, objectVal(t, schema, map[string]cty.Value{
|
||||
"ip": cty.UnknownVal(cty.List(cty.String)),
|
||||
"foo": cty.UnknownVal(cty.List(cty.String)),
|
||||
}), ric.After)
|
||||
default:
|
||||
|
|
|
@ -563,7 +563,7 @@ func (d *InstanceDiff) applyCollectionDiff(attrName string, oldAttrs map[string]
|
|||
// check the index first for special handling
|
||||
for k, diff := range d.Attributes {
|
||||
// check the index value, which can be set, and 0
|
||||
if k == attrName+".#" || k == attrName+".%" {
|
||||
if k == attrName+".#" || k == attrName+".%" || k == attrName {
|
||||
if diff.NewRemoved {
|
||||
return result, nil
|
||||
}
|
||||
|
|
|
@ -282,6 +282,7 @@ func (p *MockProvider) PlanResourceChange(r providers.PlanResourceChangeRequest)
|
|||
}
|
||||
priorState := NewInstanceStateShimmedFromValue(r.PriorState, 0)
|
||||
cfg := NewResourceConfigShimmed(r.Config, schema)
|
||||
|
||||
legacyDiff, err := p.DiffFn(info, priorState, cfg)
|
||||
|
||||
var res providers.PlanResourceChangeResponse
|
||||
|
@ -294,6 +295,7 @@ func (p *MockProvider) PlanResourceChange(r providers.PlanResourceChangeRequest)
|
|||
if err != nil {
|
||||
res.Diagnostics = res.Diagnostics.Append(err)
|
||||
}
|
||||
|
||||
res.PlannedState = newVal
|
||||
|
||||
var requiresNew []string
|
||||
|
|
Loading…
Reference in New Issue