From 4fa7cd0a681152e60e7014e66b4481c527a68a0b Mon Sep 17 00:00:00 2001 From: Liam Cervante Date: Wed, 8 Feb 2023 16:47:12 +0100 Subject: [PATCH] structured renderer: fix closing json tags when rendering with no symbols (#32642) --- .../jsonformat/computed/renderers/primitive.go | 2 +- .../computed/renderers/renderer_test.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/internal/command/jsonformat/computed/renderers/primitive.go b/internal/command/jsonformat/computed/renderers/primitive.go index bf713a8b74..a7a6dc5932 100644 --- a/internal/command/jsonformat/computed/renderers/primitive.go +++ b/internal/command/jsonformat/computed/renderers/primitive.go @@ -217,7 +217,7 @@ func (renderer primitiveRenderer) renderStringDiffAsJson(diff computed.Diff, ind } if strings.Contains(renderedJsonDiff, "\n") { - return fmt.Sprintf("jsonencode(%s\n%s%s%s%s\n%s)%s", whitespace, formatIndent(indent+1), writeDiffActionSymbol(action, opts), renderedJsonDiff, replace, formatIndent(indent+1), nullSuffix(diff.Action, opts)) + return fmt.Sprintf("jsonencode(%s\n%s%s%s%s\n%s%s)%s", whitespace, formatIndent(indent+1), writeDiffActionSymbol(action, opts), renderedJsonDiff, replace, formatIndent(indent), writeDiffActionSymbol(plans.NoOp, opts), nullSuffix(diff.Action, opts)) } return fmt.Sprintf("jsonencode(%s)%s%s", renderedJsonDiff, whitespace, replace) } diff --git a/internal/command/jsonformat/computed/renderers/renderer_test.go b/internal/command/jsonformat/computed/renderers/renderer_test.go index 3867ab7d67..352e3dd523 100644 --- a/internal/command/jsonformat/computed/renderers/renderer_test.go +++ b/internal/command/jsonformat/computed/renderers/renderer_test.go @@ -2062,6 +2062,23 @@ jsonencode( + 0, + 1, ] +`, + }, + "json_string_no_symbols": { + diff: computed.Diff{ + Renderer: Primitive("{\"key\":\"value\"}", "{\"key\":\"value\"}", cty.String), + Action: plans.NoOp, + }, + opts: computed.RenderHumanOpts{ + HideDiffActionSymbols: true, + ShowUnchangedChildren: true, + }, + expected: ` +jsonencode( + { + key = "value" + } +) `, }, }