...

Source file src/sigs.k8s.io/kustomize/kyaml/filtersutil/example_test.go

Documentation: sigs.k8s.io/kustomize/kyaml/filtersutil

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package filtersutil_test
     5  
     6  import (
     7  	"bytes"
     8  	"fmt"
     9  	"log"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  	"sigs.k8s.io/kustomize/kyaml/filtersutil"
    14  	"sigs.k8s.io/kustomize/kyaml/kio"
    15  	"sigs.k8s.io/kustomize/kyaml/yaml"
    16  )
    17  
    18  func TestApplyToJSON(t *testing.T) {
    19  	// testFilter sets `foo: bar` on each resource
    20  	testFilter := kio.FilterAll(yaml.FilterFunc(
    21  		func(node *yaml.RNode) (*yaml.RNode, error) {
    22  			set := yaml.SetField(
    23  				"foo", yaml.NewScalarRNode("bar"))
    24  			err := node.PipeE(set)
    25  			if !assert.NoError(t, err) {
    26  				t.FailNow()
    27  			}
    28  			return node, nil
    29  		}))
    30  
    31  	obj1 := buffer{Buffer: bytes.NewBufferString(`{"kind": "Foo"}`)}
    32  	obj2 := buffer{Buffer: bytes.NewBufferString(`{"kind": "Bar"}`)}
    33  	err := filtersutil.ApplyToJSON(testFilter, obj1, obj2)
    34  	if err != nil {
    35  		log.Fatal(err)
    36  	}
    37  
    38  	fmt.Println(obj1.String())
    39  	fmt.Println(obj2.String())
    40  
    41  	// Output:
    42  	// {"foo":"bar","kind":"Foo"}
    43  	// {"foo":"bar","kind":"Bar"}
    44  }
    45  
    46  type buffer struct {
    47  	*bytes.Buffer
    48  }
    49  
    50  func (buff buffer) UnmarshalJSON(b []byte) error {
    51  	buff.Reset()
    52  	buff.Write(b)
    53  	return nil
    54  }
    55  
    56  func (buff buffer) MarshalJSON() ([]byte, error) {
    57  	return buff.Bytes(), nil
    58  }
    59  

View as plain text