diff --git a/pkg/data/data.go b/pkg/data/data.go index c94a7e250e0902caa07e37a40a89209f9a410480..2e016a6fa0a2841628a306038353f514c0a692cf 100644 --- a/pkg/data/data.go +++ b/pkg/data/data.go @@ -9,6 +9,8 @@ import ( const DefaultFieldDelimiter = "." +var ErrDataIsNil = errors.New("data is nil") + type DeleteValueType struct{} var DeleteValue DeleteValueType @@ -169,6 +171,10 @@ func getPath(field string, delim ...string) []string { } func Set(field string, data, value any, delim ...string) error { + if data == nil { + return ErrDataIsNil + } + return set(getPath(field, delim...), data, value) } diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go index 5427dea82443ba59c5df5cc449904b93b0ce31a5..a77df7adb37501865655283c01cfd8d40124b2b8 100644 --- a/pkg/data/data_test.go +++ b/pkg/data/data_test.go @@ -316,6 +316,12 @@ func TestSet(t *testing.T) { []any{(map[string]any)(nil), map[string]any{"b": "2"}}, assert.Error, }, + { + "Set object to nil data", + args{"a", nil, "1"}, + nil, + assert.Error, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {