Skip to content

Commit

Permalink
Merge pull request #30855 from hashicorp/alisdair/fix-diff-map-key-qu…
Browse files Browse the repository at this point in the history
…oting

cli: Fix double-quoted map keys in diff UI
  • Loading branch information
alisdair committed Apr 13, 2022
2 parents 8546543 + fadcaaa commit 7147404
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
15 changes: 6 additions & 9 deletions internal/command/format/diff.go
Expand Up @@ -1473,24 +1473,21 @@ func (p *blockBodyDiffPrinter) writeValueDiff(old, new cty.Value, indent int, pa
p.buf.WriteString("\n")

var allKeys []string
displayKeys := make(map[string]string)
keyLen := 0
for it := old.ElementIterator(); it.Next(); {
k, _ := it.Element()
keyStr := k.AsString()
allKeys = append(allKeys, keyStr)
displayKeys[keyStr] = displayAttributeName(keyStr)
if len(displayKeys[keyStr]) > keyLen {
keyLen = len(displayKeys[keyStr])
if len(keyStr) > keyLen {
keyLen = len(keyStr)
}
}
for it := new.ElementIterator(); it.Next(); {
k, _ := it.Element()
keyStr := k.AsString()
allKeys = append(allKeys, keyStr)
displayKeys[keyStr] = displayAttributeName(keyStr)
if len(displayKeys[keyStr]) > keyLen {
keyLen = len(displayKeys[keyStr])
if len(keyStr) > keyLen {
keyLen = len(keyStr)
}
}

Expand Down Expand Up @@ -1533,8 +1530,8 @@ func (p *blockBodyDiffPrinter) writeValueDiff(old, new cty.Value, indent int, pa

p.buf.WriteString(strings.Repeat(" ", indent+2))
p.writeActionSymbol(action)
p.writeValue(cty.StringVal(displayKeys[k]), action, indent+4)
p.buf.WriteString(strings.Repeat(" ", keyLen-len(displayKeys[k])))
p.writeValue(cty.StringVal(k), action, indent+4)
p.buf.WriteString(strings.Repeat(" ", keyLen-len(k)))
p.buf.WriteString(" = ")
switch action {
case plans.Create, plans.NoOp:
Expand Down
14 changes: 10 additions & 4 deletions internal/command/format/diff_test.go
Expand Up @@ -2115,6 +2115,7 @@ func TestResourceChange_map(t *testing.T) {
"ami": cty.StringVal("ami-STATIC"),
"map_field": cty.MapVal(map[string]cty.Value{
"new-key": cty.StringVal("new-element"),
"be:ep": cty.StringVal("boop"),
}),
}),
Schema: &configschema.Block{
Expand All @@ -2129,6 +2130,7 @@ func TestResourceChange_map(t *testing.T) {
~ resource "test_instance" "example" {
~ id = "i-02ae66f368e8518a9" -> (known after apply)
+ map_field = {
+ "be:ep" = "boop"
+ "new-key" = "new-element"
}
# (1 unchanged attribute hidden)
Expand All @@ -2148,6 +2150,7 @@ func TestResourceChange_map(t *testing.T) {
"ami": cty.StringVal("ami-STATIC"),
"map_field": cty.MapVal(map[string]cty.Value{
"new-key": cty.StringVal("new-element"),
"be:ep": cty.StringVal("boop"),
}),
}),
Schema: &configschema.Block{
Expand All @@ -2162,6 +2165,7 @@ func TestResourceChange_map(t *testing.T) {
~ resource "test_instance" "example" {
~ id = "i-02ae66f368e8518a9" -> (known after apply)
~ map_field = {
+ "be:ep" = "boop"
+ "new-key" = "new-element"
}
# (1 unchanged attribute hidden)
Expand All @@ -2183,9 +2187,10 @@ func TestResourceChange_map(t *testing.T) {
"id": cty.UnknownVal(cty.String),
"ami": cty.StringVal("ami-STATIC"),
"map_field": cty.MapVal(map[string]cty.Value{
"a": cty.StringVal("aaaa"),
"b": cty.StringVal("bbbb"),
"c": cty.StringVal("cccc"),
"a": cty.StringVal("aaaa"),
"b": cty.StringVal("bbbb"),
"b:b": cty.StringVal("bbbb"),
"c": cty.StringVal("cccc"),
}),
}),
Schema: &configschema.Block{
Expand All @@ -2200,7 +2205,8 @@ func TestResourceChange_map(t *testing.T) {
~ resource "test_instance" "example" {
~ id = "i-02ae66f368e8518a9" -> (known after apply)
~ map_field = {
+ "b" = "bbbb"
+ "b" = "bbbb"
+ "b:b" = "bbbb"
# (2 unchanged elements hidden)
}
# (1 unchanged attribute hidden)
Expand Down

0 comments on commit 7147404

Please sign in to comment.