From b54668f44ce9ab8647fc3cc23a8210d281054389 Mon Sep 17 00:00:00 2001 From: Liam Cervante Date: Mon, 24 Apr 2023 11:02:32 +0200 Subject: [PATCH] make the unknown attribute renderer consider the force replacement metadata (#33065) --- .../computed/renderers/renderer_test.go | 19 +++++++++++++++++++ .../jsonformat/computed/renderers/unknown.go | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/internal/command/jsonformat/computed/renderers/renderer_test.go b/internal/command/jsonformat/computed/renderers/renderer_test.go index 94a3694a21..ae49a0974f 100644 --- a/internal/command/jsonformat/computed/renderers/renderer_test.go +++ b/internal/command/jsonformat/computed/renderers/renderer_test.go @@ -408,6 +408,25 @@ jsonencode( }, expected: "0 -> (known after apply)", }, + "computed_create_forces_replacement": { + diff: computed.Diff{ + Renderer: Unknown(computed.Diff{}), + Action: plans.Create, + Replace: true, + }, + expected: "(known after apply) # forces replacement", + }, + "computed_update_forces_replacement": { + diff: computed.Diff{ + Renderer: Unknown(computed.Diff{ + Renderer: Primitive(0.0, nil, cty.Number), + Action: plans.Delete, + }), + Action: plans.Update, + Replace: true, + }, + expected: "0 -> (known after apply) # forces replacement", + }, "object_created": { diff: computed.Diff{ Renderer: Object(map[string]computed.Diff{}), diff --git a/internal/command/jsonformat/computed/renderers/unknown.go b/internal/command/jsonformat/computed/renderers/unknown.go index 46aad3eda0..f24b836a03 100644 --- a/internal/command/jsonformat/computed/renderers/unknown.go +++ b/internal/command/jsonformat/computed/renderers/unknown.go @@ -24,10 +24,10 @@ type unknownRenderer struct { func (renderer unknownRenderer) RenderHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) string { if diff.Action == plans.Create { - return "(known after apply)" + return fmt.Sprintf("(known after apply)%s", forcesReplacement(diff.Replace, opts)) } // Never render null suffix for children of unknown changes. opts.OverrideNullSuffix = true - return fmt.Sprintf("%s -> (known after apply)", renderer.before.RenderHuman(indent, opts)) + return fmt.Sprintf("%s -> (known after apply)%s", renderer.before.RenderHuman(indent, opts), forcesReplacement(diff.Replace, opts)) }