Merge pull request #1161 from monopole/addCopyToVarSet

Add copy method to VarSet
This commit is contained in:
Kubernetes Prow Robot
2019-06-07 13:13:59 -07:00
committed by GitHub
3 changed files with 14 additions and 9 deletions

View File

@@ -39,7 +39,7 @@ func (ra *ResAccumulator) ResMap() resmap.ResMap {
// Vars returns a copy of underlying vars.
func (ra *ResAccumulator) Vars() []types.Var {
return ra.varSet.Set()
return ra.varSet.AsSlice()
}
func (ra *ResAccumulator) AppendAll(
@@ -75,7 +75,7 @@ func (ra *ResAccumulator) MergeAccumulator(other *ResAccumulator) (err error) {
if err != nil {
return err
}
return ra.varSet.MergeSet(&other.varSet)
return ra.varSet.MergeSet(other.varSet)
}
// makeVarReplacementMap returns a map of Var names to

View File

@@ -75,15 +75,20 @@ type VarSet struct {
set []Var
}
// Set returns a copy of the var set.
func (vs *VarSet) Set() []Var {
// AsSlice returns the vars as a slice.
func (vs *VarSet) AsSlice() []Var {
s := make([]Var, len(vs.set))
copy(s, vs.set)
return s
}
// Copy returns a copy of the var set.
func (vs *VarSet) Copy() VarSet {
return VarSet{set: vs.AsSlice()}
}
// MergeSet absorbs other vars with error on name collision.
func (vs *VarSet) MergeSet(incoming *VarSet) error {
func (vs *VarSet) MergeSet(incoming VarSet) error {
return vs.MergeSlice(incoming.set)
}

View File

@@ -89,7 +89,7 @@ func TestDefaulting(t *testing.T) {
}
func TestVarSet(t *testing.T) {
set := &VarSet{}
set := VarSet{}
vars := []Var{
{
Name: "SHELLVARS",
@@ -120,10 +120,10 @@ func TestVarSet(t *testing.T) {
}
for _, v := range vars {
if !set.Contains(v) {
t.Fatalf("set %v should contain var %v", set.Set(), v)
t.Fatalf("set %v should contain var %v", set.AsSlice(), v)
}
}
set2 := &VarSet{}
set2 := VarSet{}
err = set2.MergeSet(set)
if err != nil {
t.Fatalf("unexpected err: %v", err)
@@ -144,7 +144,7 @@ func TestVarSet(t *testing.T) {
t.Fatalf("unexpected field path: %v", v.FieldRef.FieldPath)
}
// Confirm sorting.
names := set2.Set()
names := set2.AsSlice()
if names[0].Name != "AWARD" ||
names[1].Name != "BACKEND" ||
names[2].Name != "SHELLVARS" {