From 8185dbe975ee153770678cb9c093afd42afb05dc Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 9 Dec 2025 18:09:24 +0100 Subject: [PATCH 1/3] add a test --- libs/jobstest/job_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 libs/jobstest/job_test.go diff --git a/libs/jobstest/job_test.go b/libs/jobstest/job_test.go new file mode 100644 index 0000000000..70f391bd7c --- /dev/null +++ b/libs/jobstest/job_test.go @@ -0,0 +1,39 @@ +package jobstest + +import ( + "encoding/json" + "testing" + + "github.com/databricks/databricks-sdk-go/service/jobs" + "github.com/stretchr/testify/require" +) + +func TestStringSlice(t *testing.T) { + x := &jobs.JobEmailNotifications{ + OnFailure: []string{}, + ForceSendFields: []string{"OnFailure"}, + } + + xs := jsonDump(t, x) + + // expecting this: + //require.Equal(t, `{"on_failure":[]}`, xs) + + // but get this: + require.Equal(t, `{}`, xs) +} + +func TestBool(t *testing.T) { + x := jobs.JobNotificationSettings{ + NoAlertForCanceledRuns: false, + ForceSendFields: []string{"NoAlertForCanceledRuns"}, + } + + require.Equal(t, `{"no_alert_for_canceled_runs":false}`, jsonDump(t, x)) +} + +func jsonDump(t *testing.T, x any) string { + xb, err := json.Marshal(x) + require.NoError(t, err) + return string(xb) +} From 88482ef3a45fce5768b33faf561b953500e92fa2 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 9 Dec 2025 18:21:55 +0100 Subject: [PATCH 2/3] update --- libs/jobstest/job_test.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/jobstest/job_test.go b/libs/jobstest/job_test.go index 70f391bd7c..568c48be97 100644 --- a/libs/jobstest/job_test.go +++ b/libs/jobstest/job_test.go @@ -8,6 +8,10 @@ import ( "github.com/stretchr/testify/require" ) +type TestStruct struct { + OnFailure []string `json:"on_failure"` +} + func TestStringSlice(t *testing.T) { x := &jobs.JobEmailNotifications{ OnFailure: []string{}, @@ -17,10 +21,13 @@ func TestStringSlice(t *testing.T) { xs := jsonDump(t, x) // expecting this: - //require.Equal(t, `{"on_failure":[]}`, xs) + // require.Equal(t, `{"on_failure":[]}`, xs) // but get this: require.Equal(t, `{}`, xs) + + // Compare with non-omitempty regular struct + require.Equal(t, `{"on_failure":[]}`, jsonDump(t, TestStruct{OnFailure: []string{}})) } func TestBool(t *testing.T) { From 7b1c3463a15a79e794e423bf9b2a859ae1ff1bed Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 9 Dec 2025 18:53:32 +0100 Subject: [PATCH 3/3] add omitempty struct test --- libs/jobstest/job_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libs/jobstest/job_test.go b/libs/jobstest/job_test.go index 568c48be97..9b4c8ce492 100644 --- a/libs/jobstest/job_test.go +++ b/libs/jobstest/job_test.go @@ -12,6 +12,10 @@ type TestStruct struct { OnFailure []string `json:"on_failure"` } +type TestStructOmitEmpty struct { + OnFailure []string `json:"on_failure,omitempty"` +} + func TestStringSlice(t *testing.T) { x := &jobs.JobEmailNotifications{ OnFailure: []string{}, @@ -28,6 +32,10 @@ func TestStringSlice(t *testing.T) { // Compare with non-omitempty regular struct require.Equal(t, `{"on_failure":[]}`, jsonDump(t, TestStruct{OnFailure: []string{}})) + + // Compare with omitempty regular struct + require.Equal(t, `{}`, jsonDump(t, TestStructOmitEmpty{OnFailure: []string{}})) + } func TestBool(t *testing.T) {