Skip to content

Commit 9813194

Browse files
committed
fix: add tests for comments, multiline, alias features
When round-tripping helm yaml, we want comments to be preserved. Multiline strings should retain their formatting (this is to allow for, for example, scripts in k8s commands). Aliases should be preserved, and followed, both for mappings and scalars.
1 parent 7127bb0 commit 9813194

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

pkg/argocd/update_test.go

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2335,6 +2335,112 @@ image:
23352335
assert.Error(t, err)
23362336
assert.Equal(t, "unexpected type ScalarNode for key attributes", err.Error())
23372337
})
2338+
2339+
t.Run("Aliases, comments, and multiline strings are preserved", func(t *testing.T) {
2340+
expected := `
2341+
image:
2342+
attributes:
2343+
name: &repo repo-name
2344+
tag: v2.0.0
2345+
# this is a comment
2346+
multiline: |
2347+
one
2348+
two
2349+
three
2350+
alias: *repo
2351+
`
2352+
2353+
inputData := []byte(`
2354+
image:
2355+
attributes:
2356+
name: &repo repo-name
2357+
tag: v1.0.0
2358+
# this is a comment
2359+
multiline: |
2360+
one
2361+
two
2362+
three
2363+
alias: *repo
2364+
`)
2365+
input := yaml.Node{}
2366+
err := yaml.Unmarshal(inputData, &input)
2367+
require.NoError(t, err)
2368+
2369+
key := "image.attributes.tag"
2370+
value := "v2.0.0"
2371+
2372+
err = setHelmValue(&input, key, value)
2373+
require.NoError(t, err)
2374+
2375+
output, err := yaml.Marshal(&input)
2376+
require.NoError(t, err)
2377+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(output)))
2378+
})
2379+
2380+
t.Run("Aliases to mappings are followed", func(t *testing.T) {
2381+
expected := `
2382+
global:
2383+
attributes: &attrs
2384+
name: &repo repo-name
2385+
tag: v2.0.0
2386+
image:
2387+
attributes: *attrs
2388+
`
2389+
2390+
inputData := []byte(`
2391+
global:
2392+
attributes: &attrs
2393+
name: &repo repo-name
2394+
tag: v1.0.0
2395+
image:
2396+
attributes: *attrs
2397+
`)
2398+
input := yaml.Node{}
2399+
err := yaml.Unmarshal(inputData, &input)
2400+
require.NoError(t, err)
2401+
2402+
key := "image.attributes.tag"
2403+
value := "v2.0.0"
2404+
2405+
err = setHelmValue(&input, key, value)
2406+
require.NoError(t, err)
2407+
2408+
output, err := yaml.Marshal(&input)
2409+
require.NoError(t, err)
2410+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(output)))
2411+
})
2412+
2413+
t.Run("Aliases to scalars are followed", func(t *testing.T) {
2414+
expected := `
2415+
image:
2416+
attributes:
2417+
name: repo-name
2418+
version: &ver v2.0.0
2419+
tag: *ver
2420+
`
2421+
2422+
inputData := []byte(`
2423+
image:
2424+
attributes:
2425+
name: repo-name
2426+
version: &ver v1.0.0
2427+
tag: *ver
2428+
`)
2429+
input := yaml.Node{}
2430+
err := yaml.Unmarshal(inputData, &input)
2431+
require.NoError(t, err)
2432+
2433+
key := "image.attributes.tag"
2434+
value := "v2.0.0"
2435+
2436+
err = setHelmValue(&input, key, value)
2437+
require.NoError(t, err)
2438+
2439+
output, err := yaml.Marshal(&input)
2440+
require.NoError(t, err)
2441+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(output)))
2442+
})
2443+
23382444
}
23392445

23402446
func Test_GetWriteBackConfig(t *testing.T) {

0 commit comments

Comments
 (0)