diff --git a/staging/src/k8s.io/client-go/testing/BUILD b/staging/src/k8s.io/client-go/testing/BUILD index d0849fcb1f..85ba75c4b0 100644 --- a/staging/src/k8s.io/client-go/testing/BUILD +++ b/staging/src/k8s.io/client-go/testing/BUILD @@ -42,6 +42,7 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", ], diff --git a/staging/src/k8s.io/client-go/testing/fixture.go b/staging/src/k8s.io/client-go/testing/fixture.go index b468b328c1..055b5b29c2 100644 --- a/staging/src/k8s.io/client-go/testing/fixture.go +++ b/staging/src/k8s.io/client-go/testing/fixture.go @@ -131,8 +131,7 @@ func ObjectReaction(tracker ObjectTracker) ReactionFunc { case PatchActionImpl: obj, err := tracker.Get(gvr, ns, action.GetName()) if err != nil { - // object is not registered - return false, nil, err + return true, nil, err } old, err := json.Marshal(obj) diff --git a/staging/src/k8s.io/client-go/testing/fixture_test.go b/staging/src/k8s.io/client-go/testing/fixture_test.go index 7b01c12a9c..2f59e98894 100644 --- a/staging/src/k8s.io/client-go/testing/fixture_test.go +++ b/staging/src/k8s.io/client-go/testing/fixture_test.go @@ -30,6 +30,7 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" ) @@ -258,3 +259,17 @@ func TestWatchAddAfterStop(t *testing.T) { t.Errorf("test resource creation failed: %v", err) } } + +func TestPatchWithMissingObject(t *testing.T) { + nodesResource := schema.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"} + + scheme := runtime.NewScheme() + codecs := serializer.NewCodecFactory(scheme) + o := NewObjectTracker(scheme, codecs.UniversalDecoder()) + reaction := ObjectReaction(o) + action := NewRootPatchSubresourceAction(nodesResource, "node-1", types.StrategicMergePatchType, []byte(`{}`)) + handled, node, err := reaction(action) + assert.True(t, handled) + assert.Nil(t, node) + assert.EqualError(t, err, `nodes "node-1" not found`) +}