From 798b61c8ef201925922290630fdcbb3672e015d2 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Fri, 7 Jun 2019 13:01:34 -0700 Subject: [PATCH] Add copy method to VarSet --- pkg/target/kusttarget_test.go | 2 +- pkg/types/var.go | 21 +++++++++++++++------ pkg/types/var_test.go | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pkg/target/kusttarget_test.go b/pkg/target/kusttarget_test.go index d1f2e02a3..37241141a 100644 --- a/pkg/target/kusttarget_test.go +++ b/pkg/target/kusttarget_test.go @@ -453,7 +453,7 @@ bases: t.Fatalf("expected var collision") } if !strings.Contains(err.Error(), - "var AWARD already encountered") { + "var 'AWARD' already encountered") { t.Fatalf("unexpected error: %v", err) } } diff --git a/pkg/types/var.go b/pkg/types/var.go index 819b06a74..3fb30b83e 100644 --- a/pkg/types/var.go +++ b/pkg/types/var.go @@ -92,20 +92,29 @@ func (vs *VarSet) MergeSet(incoming VarSet) error { return vs.MergeSlice(incoming.set) } -// MergeSlice absorbs other vars with error on name collision. +// MergeSlice absorbs a Var slice with error on name collision. // Empty fields in incoming vars are defaulted. func (vs *VarSet) MergeSlice(incoming []Var) error { for _, v := range incoming { - if vs.Contains(v) { - return fmt.Errorf( - "var %s already encountered", v.Name) + if err := vs.Merge(v); err != nil { + return err } - v.defaulting() - vs.insert(v) } return nil } +// Merge absorbs another Var with error on name collision. +// Empty fields in incoming Var is defaulted. +func (vs *VarSet) Merge(v Var) error { + if vs.Contains(v) { + return fmt.Errorf( + "var '%s' already encountered", v.Name) + } + v.defaulting() + vs.insert(v) + return nil +} + func (vs *VarSet) insert(v Var) { index := sort.Search( len(vs.set), diff --git a/pkg/types/var_test.go b/pkg/types/var_test.go index 23dd840a8..a29570b3e 100644 --- a/pkg/types/var_test.go +++ b/pkg/types/var_test.go @@ -132,7 +132,7 @@ func TestVarSet(t *testing.T) { if err == nil { t.Fatalf("expected err") } - if !strings.Contains(err.Error(), "var SHELLVARS already encountered") { + if !strings.Contains(err.Error(), "var 'SHELLVARS' already encountered") { t.Fatalf("unexpected err: %v", err) } v := set2.Get("BACKEND")