From b65b5a46d93220b32c8add2106092b3592440cf4 Mon Sep 17 00:00:00 2001 From: eric kertz Date: Wed, 2 Feb 2022 10:37:45 -0500 Subject: [PATCH] Fix panic on test op --- patch.go | 2 +- patch_test.go | 6 ++++++ v5/patch.go | 2 +- v5/patch_test.go | 7 +++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/patch.go b/patch.go index dc2b7e5..bc58f59 100644 --- a/patch.go +++ b/patch.go @@ -688,7 +688,7 @@ func (p Patch) test(doc *container, op Operation) error { } if val == nil { - if op.value().raw == nil { + if op.value() == nil || op.value().raw == nil { return nil } return errors.Wrapf(ErrTestFailed, "testing value %s failed", path) diff --git a/patch_test.go b/patch_test.go index 84e2996..98c14ea 100644 --- a/patch_test.go +++ b/patch_test.go @@ -496,6 +496,12 @@ var TestCases = []TestCase{ false, "/foo", }, + { + `{ "baz": [] }`, + `[ { "op": "test", "path": "/foo"} ]`, + true, + "/foo", + }, } func TestAllTest(t *testing.T) { diff --git a/v5/patch.go b/v5/patch.go index 97aedcf..15443ea 100644 --- a/v5/patch.go +++ b/v5/patch.go @@ -965,7 +965,7 @@ func (p Patch) test(doc *container, op Operation, options *ApplyOptions) error { } if val == nil { - if op.value().raw == nil { + if op.value() == nil || op.value().raw == nil { return nil } return errors.Wrapf(ErrTestFailed, "testing value %s failed", path) diff --git a/v5/patch_test.go b/v5/patch_test.go index 3fa079e..cb346de 100644 --- a/v5/patch_test.go +++ b/v5/patch_test.go @@ -571,6 +571,13 @@ var Cases = []Case{ }`, false, true, }, + { + `{"baz": []}`, + `[ { "op": "test", "path": "/foo" } ]`, + `{"baz": []}`, + false, + false, + }, } type BadCase struct {