Merge pull request #29983 from hashicorp/alisdair/fix-nested-set-unchanged

cli: Fix diff for nested set unchanged elements
This commit is contained in:
Alisdair McDiarmid 2021-11-19 13:40:21 -05:00 committed by GitHub
commit ec3058d551
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 25 deletions

View File

@ -569,6 +569,8 @@ func (p *blockBodyDiffPrinter) writeNestedAttrDiff(
p.buf.WriteString(" = [")
var unchanged int
for it := all.ElementIterator(); it.Next(); {
_, val := it.Element()
var action plans.Action
@ -598,23 +600,29 @@ func (p *blockBodyDiffPrinter) writeNestedAttrDiff(
newValue = val
}
if action == plans.NoOp {
unchanged++
continue
}
p.buf.WriteString("\n")
p.buf.WriteString(strings.Repeat(" ", indent+4))
p.writeActionSymbol(action)
p.buf.WriteString("{")
if action != plans.NoOp && (p.pathForcesNewResource(path) || p.pathForcesNewResource(path[:len(path)-1])) {
if p.pathForcesNewResource(path) || p.pathForcesNewResource(path[:len(path)-1]) {
p.buf.WriteString(p.color.Color(forcesNewResourceCaption))
}
path := append(path, cty.IndexStep{Key: val})
p.writeAttrsDiff(objS.Attributes, oldValue, newValue, indent+6, path, result)
p.writeAttrsDiff(objS.Attributes, oldValue, newValue, indent+8, path, result)
p.buf.WriteString("\n")
p.buf.WriteString(strings.Repeat(" ", indent+4))
p.buf.WriteString(strings.Repeat(" ", indent+6))
p.buf.WriteString("},")
}
p.buf.WriteString("\n")
p.writeSkippedElems(unchanged, indent+6)
p.buf.WriteString(strings.Repeat(" ", indent+2))
p.buf.WriteString("]")

View File

@ -2822,6 +2822,10 @@ func TestResourceChange_nestedSet(t *testing.T) {
"mount_point": cty.StringVal("/var/diska"),
"size": cty.NullVal(cty.String),
}),
cty.ObjectVal(map[string]cty.Value{
"mount_point": cty.StringVal("/var/diskb"),
"size": cty.StringVal("100GB"),
}),
}),
"root_block_device": cty.SetVal([]cty.Value{
cty.ObjectVal(map[string]cty.Value{
@ -2838,6 +2842,10 @@ func TestResourceChange_nestedSet(t *testing.T) {
"mount_point": cty.StringVal("/var/diska"),
"size": cty.StringVal("50GB"),
}),
cty.ObjectVal(map[string]cty.Value{
"mount_point": cty.StringVal("/var/diskb"),
"size": cty.StringVal("100GB"),
}),
}),
"root_block_device": cty.SetVal([]cty.Value{
cty.ObjectVal(map[string]cty.Value{
@ -2859,6 +2867,7 @@ func TestResourceChange_nestedSet(t *testing.T) {
- {
- mount_point = "/var/diska" -> null
},
# (1 unchanged element hidden)
]
id = "i-02ae66f368e8518a9"