Negative index regression test for json-patch (#122625)

* add testcase with negative index

* exercise successful negative index patching

* use different values for testing

Co-authored-by: Chris Bandy <bandy.chris@gmail.com>

---------

Co-authored-by: Chris Bandy <bandy.chris@gmail.com>

Kubernetes-commit: 83ff8a2f49f820fb355b24c65b8629710dca8a54
This commit is contained in:
Vandit Singh 2024-01-18 13:14:19 +05:30 committed by Kubernetes Publisher
parent 2d05e1425e
commit 3731515d71
3 changed files with 25 additions and 5 deletions

6
go.mod
View File

@ -33,7 +33,7 @@ require (
k8s.io/api v0.0.0-20240114225744-c9c2aecc731b k8s.io/api v0.0.0-20240114225744-c9c2aecc731b
k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d
k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2 k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2
k8s.io/client-go v0.0.0-20240111212147-fb1e77b99241 k8s.io/client-go v0.0.0-20240118092131-aa81cb55f079
k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af
k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac
k8s.io/klog/v2 v2.120.0 k8s.io/klog/v2 v2.120.0
@ -99,8 +99,8 @@ replace (
k8s.io/api => k8s.io/api v0.0.0-20240114225744-c9c2aecc731b k8s.io/api => k8s.io/api v0.0.0-20240114225744-c9c2aecc731b
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2 k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2
k8s.io/client-go => k8s.io/client-go v0.0.0-20240111212147-fb1e77b99241 k8s.io/client-go => k8s.io/client-go v0.0.0-20240118092131-aa81cb55f079
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20240115022731-e0047a82e158 k8s.io/code-generator => k8s.io/code-generator v0.0.0-20240116211422-70ef78956abf
k8s.io/component-base => k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af k8s.io/component-base => k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af
k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac
k8s.io/metrics => k8s.io/metrics v0.0.0-20240111214713-7e16510c7ec5 k8s.io/metrics => k8s.io/metrics v0.0.0-20240111214713-7e16510c7ec5

4
go.sum
View File

@ -286,8 +286,8 @@ k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d h1:3/zPMR6GopaaAWJTZvob/e
k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d/go.mod h1:TZi5dqCSETF0//y9r5QGBxc7W2udb08uXh6atA++S6Q= k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d/go.mod h1:TZi5dqCSETF0//y9r5QGBxc7W2udb08uXh6atA++S6Q=
k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2 h1:KIUJZsM00aNnmsZgrjv521uRYgJWNsIiQXWYXGyBUbQ= k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2 h1:KIUJZsM00aNnmsZgrjv521uRYgJWNsIiQXWYXGyBUbQ=
k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2/go.mod h1:UhluuBdyJ/2kqz2zakJet8rx2qgzKpH5MdTuHP1DD9A= k8s.io/cli-runtime v0.0.0-20240111214841-fbee7b86e8a2/go.mod h1:UhluuBdyJ/2kqz2zakJet8rx2qgzKpH5MdTuHP1DD9A=
k8s.io/client-go v0.0.0-20240111212147-fb1e77b99241 h1:ptuJm4+/UW4OAXQq3H8tU0Mau5zsy0JsdK2oZLsrYe4= k8s.io/client-go v0.0.0-20240118092131-aa81cb55f079 h1:OUOuImKaT5CAaXQKtil1TGER6bMwTQW2YhXK/68y0j8=
k8s.io/client-go v0.0.0-20240111212147-fb1e77b99241/go.mod h1:B4ZkmfpCL1KtqmMTMnauyvTmVOirVaiWhDpbzuOi1Hg= k8s.io/client-go v0.0.0-20240118092131-aa81cb55f079/go.mod h1:RHFbuYYVOW+tqnpm2Bvn3TrprsmyfSrWCkThHfNfMTs=
k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af h1:bJSaAg0h8WGd7ikCLu6f3Sk5dCpmdVVJHOpZSSdjnMw= k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af h1:bJSaAg0h8WGd7ikCLu6f3Sk5dCpmdVVJHOpZSSdjnMw=
k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af/go.mod h1:Thds9qLVzSOQnlg48NUrI852KTAXfgCPELf8JVSjVwE= k8s.io/component-base v0.0.0-20240112172947-d5ddea0e47af/go.mod h1:Thds9qLVzSOQnlg48NUrI852KTAXfgCPELf8JVSjVwE=
k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac h1:CFbMxJn92tD4U7dO5xM/xvusZkVXbqSHHgxmdgFeAgg= k8s.io/component-helpers v0.0.0-20240111213024-93623d0a83ac h1:CFbMxJn92tD4U7dO5xM/xvusZkVXbqSHHgxmdgFeAgg=

View File

@ -289,6 +289,26 @@ func TestJSONPatch(t *testing.T) {
fragment: `[ {"op": "add", "path": "/metadata/labels/foo", "value": "bar"} ]`, fragment: `[ {"op": "add", "path": "/metadata/labels/foo", "value": "bar"} ]`,
expectErr: true, expectErr: true,
}, },
{
obj: &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Finalizers: []string{"foo", "bar", "test"},
},
},
fragment: `[ {"op": "replace", "path": "/metadata/finalizers/-1", "value": "baz"} ]`,
expected: &corev1.Pod{
TypeMeta: metav1.TypeMeta{
Kind: "Pod",
APIVersion: "v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Finalizers: []string{"foo", "bar", "baz"},
},
Spec: corev1.PodSpec{},
},
},
} }
codec := runtime.NewCodec(scheme.DefaultJSONEncoder(), codec := runtime.NewCodec(scheme.DefaultJSONEncoder(),