...

Source file src/sigs.k8s.io/kustomize/kyaml/kio/filters/merge_test.go

Documentation: sigs.k8s.io/kustomize/kyaml/kio/filters

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

View as plain text