mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-28 01:41:48 -06:00
Merge pull request #19611 from hashicorp/b-cmd-fmt-fix-nested-blocks
command/format: Fix rendering of nested blocks during update
This commit is contained in:
commit
ef323c42e6
@ -313,11 +313,16 @@ func (p *blockBodyDiffPrinter) writeNestedBlockDiffs(name string, blockS *config
|
|||||||
if blankBefore && (len(oldItems) > 0 || len(newItems) > 0) {
|
if blankBefore && (len(oldItems) > 0 || len(newItems) > 0) {
|
||||||
p.buf.WriteRune('\n')
|
p.buf.WriteRune('\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < commonLen; i++ {
|
for i := 0; i < commonLen; i++ {
|
||||||
path := append(path, cty.IndexStep{Key: cty.NumberIntVal(int64(i))})
|
path := append(path, cty.IndexStep{Key: cty.NumberIntVal(int64(i))})
|
||||||
oldItem := oldItems[i]
|
oldItem := oldItems[i]
|
||||||
newItem := newItems[i]
|
newItem := newItems[i]
|
||||||
p.writeNestedBlockDiff(name, nil, &blockS.Block, plans.Update, oldItem, newItem, indent, path)
|
action := plans.Update
|
||||||
|
if oldItem.RawEquals(newItem) {
|
||||||
|
action = plans.NoOp
|
||||||
|
}
|
||||||
|
p.writeNestedBlockDiff(name, nil, &blockS.Block, action, oldItem, newItem, indent, path)
|
||||||
}
|
}
|
||||||
for i := commonLen; i < len(oldItems); i++ {
|
for i := commonLen; i < len(oldItems); i++ {
|
||||||
path := append(path, cty.IndexStep{Key: cty.NumberIntVal(int64(i))})
|
path := append(path, cty.IndexStep{Key: cty.NumberIntVal(int64(i))})
|
||||||
|
@ -655,6 +655,59 @@ func TestResourceChange_map(t *testing.T) {
|
|||||||
|
|
||||||
func TestResourceChange_nestedList(t *testing.T) {
|
func TestResourceChange_nestedList(t *testing.T) {
|
||||||
testCases := map[string]testCase{
|
testCases := map[string]testCase{
|
||||||
|
"in-place update - equal": {
|
||||||
|
Action: plans.Update,
|
||||||
|
Mode: addrs.ManagedResourceMode,
|
||||||
|
Before: cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"id": cty.StringVal("i-02ae66f368e8518a9"),
|
||||||
|
"ami": cty.StringVal("ami-BEFORE"),
|
||||||
|
"root_block_device": cty.ListVal([]cty.Value{
|
||||||
|
cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"volume_type": cty.StringVal("gp2"),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
After: cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"id": cty.StringVal("i-02ae66f368e8518a9"),
|
||||||
|
"ami": cty.StringVal("ami-AFTER"),
|
||||||
|
"root_block_device": cty.ListVal([]cty.Value{
|
||||||
|
cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"volume_type": cty.StringVal("gp2"),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
RequiredReplace: cty.NewPathSet(),
|
||||||
|
Schema: &configschema.Block{
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"id": {Type: cty.String, Optional: true, Computed: true},
|
||||||
|
"ami": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
BlockTypes: map[string]*configschema.NestedBlock{
|
||||||
|
"root_block_device": {
|
||||||
|
Block: configschema.Block{
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"volume_type": {
|
||||||
|
Type: cty.String,
|
||||||
|
Optional: true,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Nesting: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ExpectedOutput: ` # test_instance.example will be updated in-place
|
||||||
|
~ resource "test_instance" "example" {
|
||||||
|
~ ami = "ami-BEFORE" -> "ami-AFTER"
|
||||||
|
id = "i-02ae66f368e8518a9"
|
||||||
|
|
||||||
|
root_block_device {
|
||||||
|
volume_type = "gp2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
"in-place update - creation": {
|
"in-place update - creation": {
|
||||||
Action: plans.Update,
|
Action: plans.Update,
|
||||||
Mode: addrs.ManagedResourceMode,
|
Mode: addrs.ManagedResourceMode,
|
||||||
|
Loading…
Reference in New Issue
Block a user