# HG changeset patch # User Steeve Chailloux <steeve.chailloux@orus.io> # Date 1703852470 -3600 # Fri Dec 29 13:21:10 2023 +0100 # Node ID 64bd0354730c273189647b4aca0f0379122ef440 # Parent 0737fe51af44636a6e42345f445eaf475778965a hydrate: strip tailing carriage return on multiline string diff --git a/runner/config_test.go b/runner/config_test.go --- a/runner/config_test.go +++ b/runner/config_test.go @@ -174,6 +174,46 @@ ) } +func TestHydrateRawString(t *testing.T) { + rawVariables := []byte(` +--- +foo: | + {"something": "special"} +`) + variables := make(map[string]interface{}) + + byteContent := bytes.NewReader(rawVariables) + decoder := yaml.NewDecoder(byteContent) + + require.NoError(t, decoder.Decode(&variables)) + input := ` +--- +foo: | + { + "bar": <[foo]>, + "answer": 42 + } +` + expected := ` +--- +foo: | + { + "bar": {"something": "special"}, + "answer": 42 + } +` + + buf := bytes.NewBufferString("") + err := runner.Hydrate([]byte(input), buf, variables) + require.NoError(t, err) + assert.Equal( + t, + expected, + buf.String(), + ) + fmt.Println("done") +} + func TestYttBuildArgs(t *testing.T) { tl := testutils.NewTestLogger(t) testNS := "environments/ns1" diff --git a/runner/hydrate.go b/runner/hydrate.go --- a/runner/hydrate.go +++ b/runner/hydrate.go @@ -34,7 +34,7 @@ } switch v := val.(type) { case string: - return w.Write([]byte(v)) + return w.Write([]byte(strings.TrimSuffix(v, "\n"))) default: e := yaml.NewEncoder(w) err := e.Encode(val)