1
2
3
4 package target_test
5
6 import (
7 "fmt"
8 "strings"
9 "testing"
10
11 kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
12 "sigs.k8s.io/kustomize/api/types"
13 "sigs.k8s.io/kustomize/kyaml/resid"
14 )
15
16
17 var someVars = []types.Var{
18 {
19 Name: "AWARD",
20 ObjRef: types.Target{
21 APIVersion: "v7",
22 Gvk: resid.Gvk{Kind: "Service"},
23 Name: "nobelPrize"},
24 FieldRef: types.FieldSelector{FieldPath: "some.arbitrary.path"},
25 },
26 {
27 Name: "BIRD",
28 ObjRef: types.Target{
29 APIVersion: "v300",
30 Gvk: resid.Gvk{Kind: "Service"},
31 Name: "heron"},
32 FieldRef: types.FieldSelector{FieldPath: "metadata.name"},
33 },
34 {
35 Name: "FRUIT",
36 ObjRef: types.Target{
37 Gvk: resid.Gvk{Kind: "Service"},
38 Name: "apple"},
39 FieldRef: types.FieldSelector{FieldPath: "metadata.name"},
40 },
41 {
42 Name: "VEGETABLE",
43 ObjRef: types.Target{
44 Gvk: resid.Gvk{Kind: "Leafy"},
45 Name: "kale"},
46 FieldRef: types.FieldSelector{FieldPath: "metadata.name"},
47 },
48 }
49
50 func TestGetAllVarsSimple(t *testing.T) {
51 th := kusttest_test.MakeHarness(t)
52 th.WriteK("/app", `
53 vars:
54 - name: AWARD
55 objref:
56 kind: Service
57 name: nobelPrize
58 apiVersion: v7
59 fieldref:
60 fieldpath: some.arbitrary.path
61 - name: BIRD
62 objref:
63 kind: Service
64 name: heron
65 apiVersion: v300
66 `)
67 ra, err := makeAndLoadKustTarget(
68 t, th.GetFSys(), "/app").AccumulateTarget()
69 if err != nil {
70 t.Fatalf("Err: %v", err)
71 }
72 vars := ra.Vars()
73 if len(vars) != 2 {
74 t.Fatalf("unexpected size %d", len(vars))
75 }
76 for i := range vars[:2] {
77
78
79
80 if !vars[i].DeepEqual(someVars[i]) {
81 t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
82 }
83 }
84 }
85
86 func TestGetAllVarsNested(t *testing.T) {
87 th := kusttest_test.MakeHarness(t)
88 th.WriteK("/app/base", `
89 vars:
90 - name: AWARD
91 objref:
92 kind: Service
93 name: nobelPrize
94 apiVersion: v7
95 fieldref:
96 fieldpath: some.arbitrary.path
97 - name: BIRD
98 objref:
99 kind: Service
100 name: heron
101 apiVersion: v300
102 `)
103 th.WriteK("/app/overlays/o1", `
104 vars:
105 - name: FRUIT
106 objref:
107 kind: Service
108 name: apple
109 resources:
110 - ../../base
111 `)
112 th.WriteK("/app/overlays/o2", `
113 vars:
114 - name: VEGETABLE
115 objref:
116 kind: Leafy
117 name: kale
118 resources:
119 - ../o1
120 `)
121
122 ra, err := makeAndLoadKustTarget(
123 t, th.GetFSys(), "/app/overlays/o2").AccumulateTarget()
124 if err != nil {
125 t.Fatalf("Err: %v", err)
126 }
127 vars := ra.Vars()
128 if len(vars) != 4 {
129 for i, v := range vars {
130 fmt.Printf("%v: %v\n", i, v)
131 }
132 t.Fatalf("expected 4 vars, got %d", len(vars))
133 }
134 for i := range vars {
135
136
137
138 if !vars[i].DeepEqual(someVars[i]) {
139 t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
140 }
141 }
142 }
143
144 func TestVarCollisionsForbidden(t *testing.T) {
145 th := kusttest_test.MakeHarness(t)
146 th.WriteK("/app/base", `
147 vars:
148 - name: AWARD
149 objref:
150 kind: Service
151 name: nobelPrize
152 apiVersion: v7
153 fieldref:
154 fieldpath: some.arbitrary.path
155 - name: BIRD
156 objref:
157 kind: Service
158 name: heron
159 apiVersion: v300
160 `)
161 th.WriteK("/app/overlays/o1", `
162 vars:
163 - name: AWARD
164 objref:
165 kind: Service
166 name: academy
167 resources:
168 - ../../base
169 `)
170 th.WriteK("/app/overlays/o2", `
171 vars:
172 - name: VEGETABLE
173 objref:
174 kind: Leafy
175 name: kale
176 resources:
177 - ../o1
178 `)
179 _, err := makeAndLoadKustTarget(
180 t, th.GetFSys(), "/app/overlays/o2").AccumulateTarget()
181 if err == nil {
182 t.Fatalf("expected var collision")
183 }
184 if !strings.Contains(err.Error(),
185 "var 'AWARD' already encountered") {
186 t.Fatalf("unexpected error: %v", err)
187 }
188 }
189
View as plain text