From 3d4aed0dedf6bb62ac98768e6d8ebff07ec4eb66 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 24 Jun 2025 09:23:39 -0400 Subject: [PATCH] Add json-patch v4 compatibility test Kubernetes-commit: d180fe28ad5154eae7930a518640a8860e5a96d8 --- pkg/endpoints/handlers/rest_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/endpoints/handlers/rest_test.go b/pkg/endpoints/handlers/rest_test.go index c7bcb7f59..7f4b1f3e6 100644 --- a/pkg/endpoints/handlers/rest_test.go +++ b/pkg/endpoints/handlers/rest_test.go @@ -29,6 +29,7 @@ import ( "github.com/google/go-cmp/cmp" jsonpatch "gopkg.in/evanphx/json-patch.v4" + apiequality "k8s.io/apimachinery/pkg/api/equality" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -249,6 +250,15 @@ func TestJSONPatch(t *testing.T) { name: "valid-negative-index-patch", patch: `[{"op": "test", "value": "foo", "path": "/metadata/finalizers/-1"}]`, }, + // This demonstrates out-of-spec behavior json-patch v4 allows, + // which Kubernetes clients may depend on, and which updating to json-patch v5 currently breaks + { + name: "replace-missing-path-allowed", + patch: `[ + {"op":"replace", "path":"/metadata/path", "value":"foo"}, + {"op":"test", "path":"/metadata/path", "value":"foo"} + ]`, + }, } { p := &patcher{ patchType: types.JSONPatchType,