...

Source file src/sigs.k8s.io/kustomize/api/testutils/filtertest/runfilter.go

Documentation: sigs.k8s.io/kustomize/api/testutils/filtertest

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package filtertest_test
     5  
     6  import (
     7  	"bytes"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"sigs.k8s.io/kustomize/kyaml/kio"
    12  	"sigs.k8s.io/kustomize/kyaml/yaml"
    13  )
    14  
    15  func run(input string, f kio.Filter) (string, error) {
    16  	var out bytes.Buffer
    17  	rw := kio.ByteReadWriter{
    18  		Reader: bytes.NewBufferString(input),
    19  		Writer: &out,
    20  	}
    21  
    22  	err := kio.Pipeline{
    23  		Inputs:  []kio.Reader{&rw},
    24  		Filters: []kio.Filter{f},
    25  		Outputs: []kio.Writer{&rw},
    26  	}.Execute()
    27  	if err != nil {
    28  		return "", err
    29  	}
    30  	return out.String(), nil
    31  }
    32  
    33  // RunFilter runs filter and panic if there is error
    34  func RunFilter(t *testing.T, input string, f kio.Filter) string {
    35  	t.Helper()
    36  	output, err := run(input, f)
    37  	if !assert.NoError(t, err) {
    38  		t.FailNow()
    39  	}
    40  	return output
    41  }
    42  
    43  // RunFilterE runs filter and return error if there is
    44  func RunFilterE(t *testing.T, input string, f kio.Filter) (string, error) {
    45  	t.Helper()
    46  	output, err := run(input, f)
    47  	if err != nil {
    48  		return "", err
    49  	}
    50  	return output, nil
    51  }
    52  
    53  type SetValueArg struct {
    54  	Key      string
    55  	Value    string
    56  	Tag      string
    57  	NodePath []string
    58  }
    59  
    60  // MutationTrackerStub to help stub a mutation tracker for kio.TrackableFilter
    61  type MutationTrackerStub struct {
    62  	setValueArgs []SetValueArg
    63  }
    64  
    65  func (mts *MutationTrackerStub) MutationTracker(key, value, tag string, node *yaml.RNode) {
    66  	mts.setValueArgs = append(mts.setValueArgs, SetValueArg{
    67  		Key:      key,
    68  		Value:    value,
    69  		Tag:      tag,
    70  		NodePath: node.FieldPath(),
    71  	})
    72  }
    73  
    74  func (mts *MutationTrackerStub) SetValueArgs() []SetValueArg {
    75  	return mts.setValueArgs
    76  }
    77  
    78  func (mts *MutationTrackerStub) Reset() {
    79  	mts.setValueArgs = nil
    80  }
    81  

View as plain text