mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
Test new types.Var.DeepEqual method.
This commit is contained in:
@@ -6,6 +6,7 @@ package target_test
|
|||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -333,7 +334,12 @@ vars:
|
|||||||
t.Fatalf("unexpected size %d", len(vars))
|
t.Fatalf("unexpected size %d", len(vars))
|
||||||
}
|
}
|
||||||
for i := range vars[:2] {
|
for i := range vars[:2] {
|
||||||
if !vars[i].DeepEqual(someVars[i]) {
|
// We have to enforce the Defaulting call in someVars[i]
|
||||||
|
// to protect from a potential call of vars[i].ObjRef.GVK()
|
||||||
|
// during AccumulateTarget
|
||||||
|
vars[i].Defaulting()
|
||||||
|
someVars[i].Defaulting()
|
||||||
|
if !reflect.DeepEqual(vars[i], someVars[i]) {
|
||||||
t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
|
t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -386,7 +392,9 @@ resources:
|
|||||||
t.Fatalf("expected 4 vars, got %d", len(vars))
|
t.Fatalf("expected 4 vars, got %d", len(vars))
|
||||||
}
|
}
|
||||||
for i := range vars {
|
for i := range vars {
|
||||||
if !vars[i].DeepEqual(someVars[i]) {
|
vars[i].Defaulting()
|
||||||
|
someVars[i].Defaulting()
|
||||||
|
if !reflect.DeepEqual(vars[i], someVars[i]) {
|
||||||
t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
|
t.Fatalf("unexpected var[%d]:\n %v\n %v", i, vars[i], someVars[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,22 +66,21 @@ type FieldSelector struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// defaulting sets reference to field used by default.
|
// defaulting sets reference to field used by default.
|
||||||
func (v *Var) defaulting() {
|
func (v *Var) Defaulting() {
|
||||||
if v.FieldRef.FieldPath == "" {
|
if v.FieldRef.FieldPath == "" {
|
||||||
v.FieldRef.FieldPath = defaultFieldPath
|
v.FieldRef.FieldPath = defaultFieldPath
|
||||||
}
|
}
|
||||||
|
v.ObjRef.GVK()
|
||||||
}
|
}
|
||||||
|
|
||||||
// VarEquals returns true if var a and b are Equals.
|
// DeepEqual returns true if var a and b are Equals.
|
||||||
|
// Note 1: The objects are unchanged by the VarEqual
|
||||||
|
// Note 2: Should be normalize be FieldPath before doing
|
||||||
|
// the DeepEqual. spec.a[b] is supposed to be the same
|
||||||
|
// as spec.a.b
|
||||||
func (v Var) DeepEqual(other Var) bool {
|
func (v Var) DeepEqual(other Var) bool {
|
||||||
v.ObjRef.GVK()
|
v.Defaulting()
|
||||||
if v.FieldRef.FieldPath == "" {
|
other.Defaulting()
|
||||||
v.FieldRef.FieldPath = "metadata.name"
|
|
||||||
}
|
|
||||||
other.ObjRef.GVK()
|
|
||||||
if other.FieldRef.FieldPath == "" {
|
|
||||||
other.FieldRef.FieldPath = "metadata.name"
|
|
||||||
}
|
|
||||||
return reflect.DeepEqual(v, other)
|
return reflect.DeepEqual(v, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +143,7 @@ func (vs *VarSet) Merge(v Var) error {
|
|||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"var '%s' already encountered", v.Name)
|
"var '%s' already encountered", v.Name)
|
||||||
}
|
}
|
||||||
v.defaulting()
|
v.Defaulting()
|
||||||
vs.set[v.Name] = v
|
vs.set[v.Name] = v
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -152,7 +151,9 @@ func (vs *VarSet) Merge(v Var) error {
|
|||||||
// AbsorbSet absorbs other vars with error on (name,value) collision.
|
// AbsorbSet absorbs other vars with error on (name,value) collision.
|
||||||
func (vs *VarSet) AbsorbSet(incoming VarSet) error {
|
func (vs *VarSet) AbsorbSet(incoming VarSet) error {
|
||||||
for _, v := range incoming.set {
|
for _, v := range incoming.set {
|
||||||
vs.Absorb(v)
|
if err := vs.Absorb(v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -174,12 +175,12 @@ func (vs *VarSet) Absorb(v Var) error {
|
|||||||
conflicting := vs.Get(v.Name)
|
conflicting := vs.Get(v.Name)
|
||||||
if conflicting == nil {
|
if conflicting == nil {
|
||||||
// no conflict. The var is valid.
|
// no conflict. The var is valid.
|
||||||
v.defaulting()
|
v.Defaulting()
|
||||||
vs.set[v.Name] = v
|
vs.set[v.Name] = v
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if !v.DeepEqual(*conflicting) {
|
if !reflect.DeepEqual(v, *conflicting) {
|
||||||
// two vars with the same name are pointing at two
|
// two vars with the same name are pointing at two
|
||||||
// different resources.
|
// different resources.
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ func TestDefaulting(t *testing.T) {
|
|||||||
Name: "my-secret",
|
Name: "my-secret",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
v.defaulting()
|
v.Defaulting()
|
||||||
if v.FieldRef.FieldPath != defaultFieldPath {
|
if v.FieldRef.FieldPath != defaultFieldPath {
|
||||||
t.Fatalf("expected %s, got %v",
|
t.Fatalf("expected %s, got %v",
|
||||||
defaultFieldPath, v.FieldRef.FieldPath)
|
defaultFieldPath, v.FieldRef.FieldPath)
|
||||||
|
|||||||
Reference in New Issue
Block a user