From 161eb81499ccddaf6f11ff802820528e22e4d07d Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 30 Oct 2026 16:48:41 +0000 Subject: [PATCH 1/2] Fix inline YAML merge mappings in bundle validation --- .../inline_merge_mapping/output.txt | 21 ++++++++++++------- .../yaml_anchors/inline_merge_mapping/script | 3 ++- .../inline_merge_mapping/test.toml | 1 - libs/dyn/yamlloader/loader.go | 2 +- libs/dyn/yamlloader/yaml_anchor_test.go | 9 ++++++++ 5 files changed, 26 insertions(+), 10 deletions(-) delete mode 100644 acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml diff --git a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt index 85dc1ee379b..d3633babd0e 100644 --- a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt +++ b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt @@ -1,8 +1,15 @@ ->>> [CLI] bundle validate -Error: failed to load [TEST_TMP_DIR]/databricks.yml: yaml ([TEST_TMP_DIR]/databricks.yml:11:11): map merge requires map or sequence of maps as the value - - -Found 1 error - -Exit code: 1 +>>> [CLI] bundle validate --strict -t dev +Name: test-bundle +Target: dev +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/dev + +Validation OK! + +>>> [CLI] bundle validate --strict -t dev -o json +{ + "default": "overridden", + "value": "overridden" +} diff --git a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script index 1724b135e5e..52dffde0edd 100644 --- a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script +++ b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script @@ -1,2 +1,3 @@ # An inline mapping as the value of '<<' in target variables. -errcode trace $CLI bundle validate +trace $CLI bundle validate --strict -t dev +trace $CLI bundle validate --strict -t dev -o json | jq .variables.x diff --git a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml deleted file mode 100644 index 84101454028..00000000000 --- a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml +++ /dev/null @@ -1 +0,0 @@ -Badness = "The YAML merge key spec allows a single mapping as the value of the merge key, but it is rejected." diff --git a/libs/dyn/yamlloader/loader.go b/libs/dyn/yamlloader/loader.go index aebbf0883e9..708ae5dbaac 100644 --- a/libs/dyn/yamlloader/loader.go +++ b/libs/dyn/yamlloader/loader.go @@ -169,7 +169,7 @@ func (d *loader) loadMapping(node *yaml.Node, loc diag.Location) (dyn.Value, err switch merge.Kind { case yaml.SequenceNode: mnodes = merge.Content - case yaml.AliasNode: + case yaml.MappingNode, yaml.AliasNode: mnodes = []*yaml.Node{merge} default: return dyn.NilValue, merr diff --git a/libs/dyn/yamlloader/yaml_anchor_test.go b/libs/dyn/yamlloader/yaml_anchor_test.go index 00f4576a3e2..346710d7e03 100644 --- a/libs/dyn/yamlloader/yaml_anchor_test.go +++ b/libs/dyn/yamlloader/yaml_anchor_test.go @@ -138,3 +138,12 @@ func TestYAMLAnchor10(t *testing.T) { assert.Equal(t, 1, self.Get("use1").Get("value").AsAny()) assert.Equal(t, 1, self.Get("use2").Get("value").AsAny()) } + +func TestYAMLInlineMapMerge(t *testing.T) { + input := "target:\n <<: {x: inherited, y: merged}\n x: local\n" + value, err := yamlloader.LoadYAML("inline.yml", bytes.NewBufferString(input)) + require.NoError(t, err) + + assert.Equal(t, "local", value.Get("target").Get("x").AsAny()) + assert.Equal(t, "merged", value.Get("target").Get("y").AsAny()) +} From 2cc1143e6de66a3400a312e95adec0e13de6b01e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 2 Nov 2026 14:38:56 +0000 Subject: [PATCH 2/2] Test inline YAML merge without strict validation --- .../validate/yaml_anchors/inline_merge_mapping/output.txt | 4 ++-- .../bundle/validate/yaml_anchors/inline_merge_mapping/script | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt index d3633babd0e..166aeb69530 100644 --- a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt +++ b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt @@ -1,5 +1,5 @@ ->>> [CLI] bundle validate --strict -t dev +>>> [CLI] bundle validate -t dev Name: test-bundle Target: dev Workspace: @@ -8,7 +8,7 @@ Workspace: Validation OK! ->>> [CLI] bundle validate --strict -t dev -o json +>>> [CLI] bundle validate -t dev -o json { "default": "overridden", "value": "overridden" diff --git a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script index 52dffde0edd..2f23d2742fb 100644 --- a/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script +++ b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script @@ -1,3 +1,3 @@ # An inline mapping as the value of '<<' in target variables. -trace $CLI bundle validate --strict -t dev -trace $CLI bundle validate --strict -t dev -o json | jq .variables.x +trace $CLI bundle validate -t dev +trace $CLI bundle validate -t dev -o json | jq .variables.x