1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package filters_test
import (
"bytes"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
"sigs.k8s.io/kustomize/kyaml/yaml"
)
// TestMerge_Merge_order tests that the original order of elements
// retained after merge
func TestMerge_Merge_order(t *testing.T) {
r1, err := yaml.Parse(`
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-1
namespace: bar-1
spec:
template:
spec: {}
`)
if !assert.NoError(t, err) {
t.FailNow()
}
r2, err := yaml.Parse(`
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-2
namespace: bar-2
spec:
template:
spec: {}
`)
if !assert.NoError(t, err) {
t.FailNow()
}
var b bytes.Buffer
err = kio.Pipeline{
Inputs: []kio.Reader{&kio.PackageBuffer{Nodes: []*yaml.RNode{r1, r2}}},
Filters: []kio.Filter{filters.MatchFilter{}},
Outputs: []kio.Writer{&kio.ByteWriter{Writer: &b}},
}.Execute()
if !assert.NoError(t, err) {
t.FailNow()
}
expected := strings.TrimSpace(`
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-1
namespace: bar-1
spec:
template:
spec: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-2
namespace: bar-2
spec:
template:
spec: {}
`)
if !assert.Equal(t, expected, strings.TrimSpace(b.String())) {
t.FailNow()
}
b.Reset()
err = kio.Pipeline{
Inputs: []kio.Reader{&kio.PackageBuffer{Nodes: []*yaml.RNode{r2, r1}}},
Filters: []kio.Filter{filters.MatchFilter{}},
Outputs: []kio.Writer{&kio.ByteWriter{Writer: &b}},
}.Execute()
if !assert.NoError(t, err) {
t.FailNow()
}
expected = strings.TrimSpace(`
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-2
namespace: bar-2
spec:
template:
spec: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo-1
namespace: bar-1
spec:
template:
spec: {}
`)
if !assert.Equal(t, expected, strings.TrimSpace(b.String())) {
t.FailNow()
}
}
|