Skip to content

Commit 211fde2

Browse files
akuitybotkrancour
andauthored
chore(backport release-1.4): fix: make quote() func in expressions not double-quote strings (#3797)
Co-authored-by: Kent Rancourt <[email protected]>
1 parent c1cc052 commit 211fde2

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

internal/expressions/json_templates.go

+3
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ func EvaluateTemplate(template string, env map[string]any, exprOpts ...expr.Opti
113113
exprOpts = append(exprOpts, expr.Function(
114114
"quote",
115115
func(a ...any) (any, error) {
116+
if str, ok := a[0].(string); ok {
117+
return fmt.Sprintf("%q", str), nil
118+
}
116119
jsonBytes, err := json.Marshal(a[0])
117120
if err != nil {
118121
return nil, fmt.Errorf("error applying quote() function: %w", err)

internal/expressions/json_templates_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,16 @@ func TestEvaluateJSONTemplate(t *testing.T) {
220220
require.Equal(t, `{"foo":"bar"}`, parsed.AString)
221221
},
222222
},
223+
{
224+
name: "quote function doesn't double quote string input",
225+
jsonTemplate: `{ "AString": "${{ quote('foo') }}" }`,
226+
assertions: func(t *testing.T, jsonOutput []byte, err error) {
227+
require.NoError(t, err)
228+
parsed := testStruct{}
229+
require.NoError(t, json.Unmarshal(jsonOutput, &parsed))
230+
require.Equal(t, "foo", parsed.AString)
231+
},
232+
},
223233
{
224234
name: "a variety of tricky cases dealing with YAML and quotes",
225235
yamlTemplate: `

0 commit comments

Comments
 (0)