...
1
2
3
4 package fsslice_test
5
6 import (
7 "bytes"
8 "strings"
9 "testing"
10
11 "github.com/stretchr/testify/assert"
12 "sigs.k8s.io/kustomize/api/filters/filtersutil"
13 . "sigs.k8s.io/kustomize/api/filters/fsslice"
14 "sigs.k8s.io/kustomize/kyaml/kio"
15 "sigs.k8s.io/kustomize/kyaml/yaml"
16 )
17
18 type TestCase struct {
19 input string
20 expected string
21 filter Filter
22 fsSlice string
23 error string
24 }
25
26 var tests = map[string]TestCase{
27 "empty": {
28 fsSlice: `
29 `,
30 input: `
31 apiVersion: foo/v1
32 kind: Bar
33 `,
34 expected: `
35 apiVersion: foo/v1
36 kind: Bar
37 `,
38 filter: Filter{
39 SetValue: filtersutil.SetScalar("e"),
40 CreateKind: yaml.ScalarNode,
41 },
42 },
43 "two": {
44 fsSlice: `
45 - path: a/b
46 group: foo
47 version: v1
48 create: true
49 kind: Bar
50 - path: q/r[]/s/t
51 group: foo
52 version: v1
53 create: true
54 kind: Bar
55 `,
56 input: `
57 apiVersion: foo/v1
58 kind: Bar
59 q:
60 r:
61 - s: {}
62 `,
63 expected: `
64 apiVersion: foo/v1
65 kind: Bar
66 q:
67 r:
68 - s: {t: e}
69 a:
70 b: e
71 `,
72 filter: Filter{
73 SetValue: filtersutil.SetScalar("e"),
74 CreateKind: yaml.ScalarNode,
75 },
76 },
77 }
78
79 func TestFilter(t *testing.T) {
80 for name := range tests {
81 test := tests[name]
82 t.Run(name, func(t *testing.T) {
83 err := yaml.Unmarshal([]byte(test.fsSlice), &test.filter.FsSlice)
84 if !assert.NoError(t, err) {
85 t.FailNow()
86 }
87
88 out := &bytes.Buffer{}
89 rw := &kio.ByteReadWriter{
90 Reader: bytes.NewBufferString(test.input),
91 Writer: out,
92 OmitReaderAnnotations: true,
93 }
94
95
96 err = kio.Pipeline{
97 Inputs: []kio.Reader{rw},
98 Filters: []kio.Filter{kio.FilterAll(test.filter)},
99 Outputs: []kio.Writer{rw},
100 }.Execute()
101 if test.error != "" {
102 if !assert.EqualError(t, err, test.error) {
103 t.FailNow()
104 }
105
106 return
107 }
108
109 if !assert.NoError(t, err) {
110 t.FailNow()
111 }
112
113
114 if !assert.Equal(t,
115 strings.TrimSpace(test.expected),
116 strings.TrimSpace(out.String())) {
117 t.FailNow()
118 }
119 })
120 }
121 }
122
View as plain text