From c478edc7493fb96664c4d8a5f416d63f603ce064 Mon Sep 17 00:00:00 2001 From: Andrew Nester Date: Tue, 10 Oct 2023 16:30:46 +0200 Subject: [PATCH 1/3] Allow target overrides for sync section --- bundle/config/root.go | 7 ++++++ bundle/config/target.go | 2 ++ bundle/tests/override_sync/databricks.yml | 26 +++++++++++++++++++++++ bundle/tests/override_sync_test.go | 25 ++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 bundle/tests/override_sync/databricks.yml create mode 100644 bundle/tests/override_sync_test.go diff --git a/bundle/config/root.go b/bundle/config/root.go index 3c79fb0bc4..b851cd076e 100644 --- a/bundle/config/root.go +++ b/bundle/config/root.go @@ -280,5 +280,12 @@ func (r *Root) MergeTargetOverrides(target *Target) error { git.OriginURL = target.Git.OriginURL } + if target.Sync.Include != nil || target.Sync.Exclude != nil { + err = mergo.Merge(&r.Sync, target.Sync, mergo.WithAppendSlice) + if err != nil { + return err + } + } + return nil } diff --git a/bundle/config/target.go b/bundle/config/target.go index 2489efc33d..abcbeff53b 100644 --- a/bundle/config/target.go +++ b/bundle/config/target.go @@ -35,6 +35,8 @@ type Target struct { Git Git `json:"git,omitempty"` RunAs *jobs.JobRunAs `json:"run_as,omitempty"` + + Sync Sync `json:"sync,omitempty"` } const ( diff --git a/bundle/tests/override_sync/databricks.yml b/bundle/tests/override_sync/databricks.yml new file mode 100644 index 0000000000..1417b86441 --- /dev/null +++ b/bundle/tests/override_sync/databricks.yml @@ -0,0 +1,26 @@ +bundle: + name: override_sync + +workspace: + host: https://acme.cloud.databricks.com/ + +sync: + include: + - src/* + +targets: + development: + sync: + include: + - tests/* + exclude: + - dist + + staging: + sync: + include: + - fixtures/* + + prod: + workspace: + host: https://acme-prod.cloud.databricks.com/ diff --git a/bundle/tests/override_sync_test.go b/bundle/tests/override_sync_test.go new file mode 100644 index 0000000000..1e4f3018e2 --- /dev/null +++ b/bundle/tests/override_sync_test.go @@ -0,0 +1,25 @@ +package config_tests + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestOverrideSyncDevTarget(t *testing.T) { + b := load(t, "./override_sync") + assert.ElementsMatch(t, []string{"src/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync", "development") + assert.ElementsMatch(t, []string{"src/*", "tests/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{"dist"}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync", "staging") + assert.ElementsMatch(t, []string{"src/*", "fixtures/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync", "prod") + assert.ElementsMatch(t, []string{"src/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) +} From 9b3aae55e2e2f5b69bba0e41481eec07500cefc9 Mon Sep 17 00:00:00 2001 From: Andrew Nester Date: Tue, 10 Oct 2023 16:54:27 +0200 Subject: [PATCH 2/3] use pointer --- bundle/config/root.go | 2 +- bundle/config/target.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundle/config/root.go b/bundle/config/root.go index b851cd076e..bf20383393 100644 --- a/bundle/config/root.go +++ b/bundle/config/root.go @@ -280,7 +280,7 @@ func (r *Root) MergeTargetOverrides(target *Target) error { git.OriginURL = target.Git.OriginURL } - if target.Sync.Include != nil || target.Sync.Exclude != nil { + if target.Sync != nil { err = mergo.Merge(&r.Sync, target.Sync, mergo.WithAppendSlice) if err != nil { return err diff --git a/bundle/config/target.go b/bundle/config/target.go index abcbeff53b..fc776c7b9a 100644 --- a/bundle/config/target.go +++ b/bundle/config/target.go @@ -36,7 +36,7 @@ type Target struct { RunAs *jobs.JobRunAs `json:"run_as,omitempty"` - Sync Sync `json:"sync,omitempty"` + Sync *Sync `json:"sync,omitempty"` } const ( From 7b71a99ead5c2a22ec65b201f4e170c2946bd6c6 Mon Sep 17 00:00:00 2001 From: Andrew Nester Date: Tue, 10 Oct 2023 17:00:01 +0200 Subject: [PATCH 3/3] added test with no root sync --- .../override_sync_no_root/databricks.yml | 22 +++++++++++++++++++ bundle/tests/override_sync_test.go | 20 ++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 bundle/tests/override_sync_no_root/databricks.yml diff --git a/bundle/tests/override_sync_no_root/databricks.yml b/bundle/tests/override_sync_no_root/databricks.yml new file mode 100644 index 0000000000..109d8da1fd --- /dev/null +++ b/bundle/tests/override_sync_no_root/databricks.yml @@ -0,0 +1,22 @@ +bundle: + name: override_sync + +workspace: + host: https://acme.cloud.databricks.com/ + +targets: + development: + sync: + include: + - tests/* + exclude: + - dist + + staging: + sync: + include: + - fixtures/* + + prod: + workspace: + host: https://acme-prod.cloud.databricks.com/ diff --git a/bundle/tests/override_sync_test.go b/bundle/tests/override_sync_test.go index 1e4f3018e2..a2d3a05f5a 100644 --- a/bundle/tests/override_sync_test.go +++ b/bundle/tests/override_sync_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" ) -func TestOverrideSyncDevTarget(t *testing.T) { +func TestOverrideSyncTarget(t *testing.T) { b := load(t, "./override_sync") assert.ElementsMatch(t, []string{"src/*"}, b.Config.Sync.Include) assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) @@ -23,3 +23,21 @@ func TestOverrideSyncDevTarget(t *testing.T) { assert.ElementsMatch(t, []string{"src/*"}, b.Config.Sync.Include) assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) } + +func TestOverrideSyncTargetNoRootSync(t *testing.T) { + b := load(t, "./override_sync_no_root") + assert.ElementsMatch(t, []string{}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync_no_root", "development") + assert.ElementsMatch(t, []string{"tests/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{"dist"}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync_no_root", "staging") + assert.ElementsMatch(t, []string{"fixtures/*"}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) + + b = loadTarget(t, "./override_sync_no_root", "prod") + assert.ElementsMatch(t, []string{}, b.Config.Sync.Include) + assert.ElementsMatch(t, []string{}, b.Config.Sync.Exclude) +}