From 6b93973bad26faa9e01d1ef427d379df808ca4e0 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Tue, 27 Nov 2018 12:17:48 -0800 Subject: [PATCH] Fix #560 (kinda/sorta) --- pkg/transformers/mutatefield.go | 7 +++++++ pkg/transformers/mutatefield_test.go | 7 ++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/transformers/mutatefield.go b/pkg/transformers/mutatefield.go index b90ccb60ae..eddfeee20b 100644 --- a/pkg/transformers/mutatefield.go +++ b/pkg/transformers/mutatefield.go @@ -18,6 +18,8 @@ package transformers import ( "fmt" + "log" + "strings" ) type mutateFunc func(interface{}) (interface{}, error) @@ -53,6 +55,11 @@ func mutateField( v := m[pathToField[0]] newPathToField := pathToField[1:] switch typedV := v.(type) { + case nil: + log.Printf( + "nil value at `%s` ignored in mutation attempt", + strings.Join(pathToField, ".")) + return nil case map[string]interface{}: return mutateField(typedV, newPathToField, createIfNotPresent, fns...) case []interface{}: diff --git a/pkg/transformers/mutatefield_test.go b/pkg/transformers/mutatefield_test.go index 06b020296c..e3f5262758 100644 --- a/pkg/transformers/mutatefield_test.go +++ b/pkg/transformers/mutatefield_test.go @@ -162,10 +162,7 @@ func TestWithNil(t *testing.T) { m := &noopMutator{} err := mutateField( obj.Map(), []string{"spec", "template", "metadata", "labels", "vegetable"}, false, m.mutate) - if err == nil { - t.Fatalf("Expected error due to nil field.") - } - if err.Error() != " is not expected to be a primitive type" { - t.Fatalf("unexpected error: %v", err) + if err != nil { + t.Fatalf("Unexpected error: %v", err) } }