pull/32482/merge
Vignesh 2 days ago committed by GitHub
commit 2d67c68463
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -204,18 +204,16 @@ func annotateAndMerge(files map[string]string) (string, error) {
if strings.TrimSpace(doc) == "" { if strings.TrimSpace(doc) == "" {
continue continue
} }
manifests, err := kio.ParseAll(doc) manifest, err := kyaml.Parse(doc)
if err != nil { if err != nil {
return "", fmt.Errorf("parsing %s: %w", fname, err) return "", fmt.Errorf("parsing %s: %w", fname, err)
} }
for _, manifest := range manifests {
if err := manifest.PipeE(kyaml.SetAnnotation(filenameAnnotation, fname)); err != nil { if err := manifest.PipeE(kyaml.SetAnnotation(filenameAnnotation, fname)); err != nil {
return "", fmt.Errorf("annotating %s: %w", fname, err) return "", fmt.Errorf("annotating %s: %w", fname, err)
} }
combinedManifests = append(combinedManifests, manifest) combinedManifests = append(combinedManifests, manifest)
} }
} }
}
merged, err := kio.StringAll(combinedManifests) merged, err := kio.StringAll(combinedManifests)
if err != nil { if err != nil {
@ -234,13 +232,13 @@ func annotateAndMerge(files map[string]string) (string, error) {
// group), so that merging results from different invocations does not collide // group), so that merging results from different invocations does not collide
// on the same synthetic key. // on the same synthetic key.
func splitAndDeannotate(postrendered, fallbackPrefix string) (map[string]string, error) { func splitAndDeannotate(postrendered, fallbackPrefix string) (map[string]string, error) {
manifests, err := kio.ParseAll(postrendered) docs := releaseutil.SplitManifests(postrendered)
manifestsByFilename := make(map[string][]*kyaml.RNode)
for i := 0; i < len(docs); i++ {
manifest, err := kyaml.Parse(docs[fmt.Sprintf("manifest-%d", i)])
if err != nil { if err != nil {
return nil, fmt.Errorf("error parsing YAML: %w", err) return nil, fmt.Errorf("error parsing YAML: %w", err)
} }
manifestsByFilename := make(map[string][]*kyaml.RNode)
for i, manifest := range manifests {
meta, err := manifest.GetMeta() meta, err := manifest.GetMeta()
if err != nil { if err != nil {
return nil, fmt.Errorf("getting metadata: %w", err) return nil, fmt.Errorf("getting metadata: %w", err)

@ -1704,7 +1704,7 @@ data:
{ {
name: "invalid yaml input", name: "invalid yaml input",
input: "invalid: yaml: content:", input: "invalid: yaml: content:",
expectedError: "error parsing YAML: MalformedYAMLError", expectedError: "error parsing YAML:",
}, },
{ {
name: "manifest without filename annotation", name: "manifest without filename annotation",
@ -1799,6 +1799,33 @@ data:
} }
} }
func TestRenderResources_PostRenderer_ListAnchorRoundTrip(t *testing.T) {
cfg := actionConfigFixture(t)
ch := buildChartWithTemplates([]*common.File{{
Name: "templates/list.yaml",
ModTime: time.Now(),
Data: []byte(`apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: ConfigMap
metadata:
name: cm-a
data: &shared
key: value
- apiVersion: v1
kind: ConfigMap
metadata:
name: cm-b
data: *shared`),
}})
_, buf, _, err := cfg.renderResources(t.Context(), ch, nil, "test-release", "", false, false, false, &mockPostRenderer{}, false, false, false, PostRenderStrategyCombined)
require.NoError(t, err)
assert.Contains(t, buf.String(), "name: cm-a")
assert.Contains(t, buf.String(), "name: cm-b")
}
func TestRenderResources_PostRenderer_Success(t *testing.T) { func TestRenderResources_PostRenderer_Success(t *testing.T) {
cfg := actionConfigFixture(t) cfg := actionConfigFixture(t)
@ -1915,7 +1942,7 @@ func TestRenderResources_PostRenderer_SplitError(t *testing.T) {
mockPR, false, false, false, PostRenderStrategyCombined, mockPR, false, false, false, PostRenderStrategyCombined,
) )
assert.ErrorContains(t, err, "error while parsing post rendered output: error parsing YAML: MalformedYAMLError:") assert.ErrorContains(t, err, "error while parsing post rendered output: error parsing YAML:")
} }
func TestRenderResources_PostRenderer_Integration(t *testing.T) { func TestRenderResources_PostRenderer_Integration(t *testing.T) {

Loading…
Cancel
Save