From 978a2c9dc0c6c554ed35f046e33321e2c250fcf2 Mon Sep 17 00:00:00 2001 From: ensiouel <ensiouel@gmail.com> Date: Wed, 17 Jan 2024 16:02:32 +0300 Subject: [PATCH] =?UTF-8?q?feature:=20=D0=B2=20=D0=BF=D0=B0=D0=BA=D0=B5?= =?UTF-8?q?=D1=82=20data=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BD=D0=B0=20=D1=82=D0=BE,=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=B8=20map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/data/data.go | 4 ++++ pkg/data/data_test.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/pkg/data/data.go b/pkg/data/data.go index 0540055a..c1d0f63f 100644 --- a/pkg/data/data.go +++ b/pkg/data/data.go @@ -177,6 +177,10 @@ func set(path []string, data, value any) error { switch v := data.(type) { case map[string]interface{}: + if v == nil { + return nil + } + if len(path) == 1 { if _, ok := value.(DeleteValueType); ok { diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go index 785eefbb..ecfacbbf 100644 --- a/pkg/data/data_test.go +++ b/pkg/data/data_test.go @@ -8,6 +8,8 @@ import ( ) func TestDelete(t *testing.T) { + var uninitializedMap map[string]any + tests := []struct { name string in interface{} @@ -62,6 +64,12 @@ func TestDelete(t *testing.T) { }, }, "z": "2"}, }, + { + "object field from uninitialized map", + uninitializedMap, + "a.b", + uninitializedMap, + }, // Решили что автоматически удалять пустые объекты/слайсы не нужно //{ // "empty object", -- GitLab