From 1422df7309c52ff1f7828feaceda45c3bb8714b3 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Fri, 16 Oct 2026 10:46:49 +0200 Subject: [PATCH 1/8] acc: record configuration edge cases where the dyn-free rewrite differs Twenty bundle validate tests found by reviewing libs/dyn against the structvar implementation (#6954): merge keys and aliases in target variables, duplicate keys, references that resolve to the wrong type, include overrides with zero values, null blocks, and diagnostic locations. Each pins the current behaviour; Badness marks the cases where the current behaviour is itself wrong. Co-authored-by: Isaac --- .../databricks.yml | 17 +++++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 13 +++++++++++++ .../script | 2 ++ .../databricks.yml | 13 +++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 13 +++++++++++++ .../script | 2 ++ .../databricks.yml | 11 +++++++++++ .../out.test.toml | 2 ++ .../output.txt | 8 ++++++++ .../script | 2 ++ .../databricks.yml | 15 +++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 9 +++++++++ .../override.yml | 4 ++++ .../script | 2 ++ .../a.yml | 3 +++ .../b.yml | 2 ++ .../databricks.yml | 12 ++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 9 +++++++++ .../script | 2 ++ .../databricks.yml | 8 ++++++++ .../out.test.toml | 2 ++ .../output.txt | 10 ++++++++++ .../nested_timestamp_complex_default/script | 2 ++ .../nested_timestamp_complex_default/test.toml | 1 + .../null_resources_container/databricks.yml | 4 ++++ .../null_resources_container/out.test.toml | 2 ++ .../parity/null_resources_container/output.txt | 9 +++++++++ .../parity/null_resources_container/script | 2 ++ .../databricks.yml | 8 ++++++++ .../out.test.toml | 2 ++ .../output.txt | 13 +++++++++++++ .../script | 2 ++ .../databricks.yml | 7 +++++++ .../out.test.toml | 2 ++ .../output.txt | 13 +++++++++++++ .../script | 2 ++ .../resolved_invalid_map_value/databricks.yml | 16 ++++++++++++++++ .../resolved_invalid_map_value/out.test.toml | 2 ++ .../resolved_invalid_map_value/output.txt | 9 +++++++++ .../parity/resolved_invalid_map_value/script | 2 ++ .../databricks.yml | 15 +++++++++++++++ .../out.test.toml | 2 ++ .../resolved_invalid_sequence_item/output.txt | 11 +++++++++++ .../resolved_invalid_sequence_item/script | 2 ++ .../databricks.yml | 4 ++++ .../out.test.toml | 2 ++ .../output.txt | 8 ++++++++ .../scalar_targets_rewrite_diagnostic/script | 2 ++ .../databricks.yml | 13 +++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 6 ++++++ .../script | 2 ++ .../databricks.yml | 11 +++++++++++ .../out.test.toml | 2 ++ .../output.txt | 10 ++++++++++ .../target_variable_timestamp_shorthand/script | 2 ++ .../test.toml | 1 + .../databricks.yml | 14 ++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 17 +++++++++++++++++ .../script | 2 ++ .../databricks.yml | 18 ++++++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 9 +++++++++ .../script | 2 ++ .../databricks.yml | 15 +++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 6 ++++++ .../script | 2 ++ .../databricks.yml | 11 +++++++++++ .../out.test.toml | 2 ++ .../output.txt | 8 ++++++++ .../script | 2 ++ .../test.toml | 1 + .../databricks.yml | 15 +++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 8 ++++++++ .../script | 2 ++ .../databricks.yml | 15 +++++++++++++++ .../out.test.toml | 2 ++ .../output.txt | 6 ++++++ .../targets_inherited_from_root_merge/script | 2 ++ acceptance/bundle/validate/parity/test.toml | 4 ++++ 87 files changed, 533 insertions(+) create mode 100644 acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml create mode 100644 acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml create mode 100644 acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt create mode 100644 acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script create mode 100644 acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml create mode 100644 acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml create mode 100644 acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt create mode 100644 acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script create mode 100644 acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml create mode 100644 acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml create mode 100644 acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt create mode 100644 acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script create mode 100644 acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml create mode 100644 acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml create mode 100644 acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt create mode 100644 acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml create mode 100644 acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script create mode 100644 acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml create mode 100644 acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml create mode 100644 acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt create mode 100644 acceptance/bundle/validate/parity/nested_timestamp_complex_default/script create mode 100644 acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml create mode 100644 acceptance/bundle/validate/parity/null_resources_container/databricks.yml create mode 100644 acceptance/bundle/validate/parity/null_resources_container/out.test.toml create mode 100644 acceptance/bundle/validate/parity/null_resources_container/output.txt create mode 100644 acceptance/bundle/validate/parity/null_resources_container/script create mode 100644 acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml create mode 100644 acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml create mode 100644 acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt create mode 100644 acceptance/bundle/validate/parity/null_schedule_default_materialization/script create mode 100644 acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml create mode 100644 acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml create mode 100644 acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt create mode 100644 acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_map_value/script create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt create mode 100644 acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script create mode 100644 acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml create mode 100644 acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml create mode 100644 acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt create mode 100644 acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script create mode 100644 acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script create mode 100644 acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script create mode 100644 acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script create mode 100644 acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script create mode 100644 acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script create mode 100644 acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script create mode 100644 acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml create mode 100644 acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml create mode 100644 acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt create mode 100644 acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script create mode 100644 acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml create mode 100644 acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml create mode 100644 acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt create mode 100644 acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script create mode 100644 acceptance/bundle/validate/parity/test.toml diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml new file mode 100644 index 00000000000..7ae4a68fa02 --- /dev/null +++ b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml @@ -0,0 +1,17 @@ +bundle: + name: test-bundle + +resources: + apps: + app: + name: test-app + source_code_path: . + resources: + - name: job + job: + id: "1" + permission: INVALID + - name: job + job: + id: "2" + permission: INVALID diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt new file mode 100644 index 00000000000..d0b32736675 --- /dev/null +++ b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt @@ -0,0 +1,13 @@ + +>>> [CLI] bundle validate +Warning: invalid value "INVALID" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER] + at resources.apps.app.resources[0].job.permission + in databricks.yml:13:25 + +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default + +Found 1 warning diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script new file mode 100644 index 00000000000..e9222e98058 --- /dev/null +++ b/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script @@ -0,0 +1,2 @@ +# A diagnostic on a field of a duplicated app resource entry points at the first entry. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml new file mode 100644 index 00000000000..a337abdcff1 --- /dev/null +++ b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml @@ -0,0 +1,13 @@ +bundle: + name: test-bundle + +variables: + job_config: + type: complex + default: + name: test + misspelled_field: value + +resources: + jobs: + j: ${var.job_config} diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt new file mode 100644 index 00000000000..118399cba34 --- /dev/null +++ b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt @@ -0,0 +1,13 @@ + +>>> [CLI] bundle validate +Warning: unknown field: misspelled_field + at resources.jobs.j + in databricks.yml:9:7 + +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default + +Found 1 warning diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script new file mode 100644 index 00000000000..4b8218079e8 --- /dev/null +++ b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script @@ -0,0 +1,2 @@ +# An unknown field inside a complex variable used as a whole resource keeps the location of its key. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml new file mode 100644 index 00000000000..03d9373eed1 --- /dev/null +++ b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml @@ -0,0 +1,11 @@ +bundle: + name: test-bundle + +resources: + jobs: + j: + name: test + tags: + 7: invalid-key + tags: + good: ok diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt new file mode 100644 index 00000000000..8c0f7149fad --- /dev/null +++ b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt @@ -0,0 +1,8 @@ + +>>> [CLI] bundle validate +Error: failed to load [TEST_TMP_DIR]/databricks.yml: yaml ([TEST_TMP_DIR]/databricks.yml:9:9): invalid key tag: !!int + + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script new file mode 100644 index 00000000000..58b74e2f574 --- /dev/null +++ b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script @@ -0,0 +1,2 @@ +# A value replaced by a later duplicate key is still loaded, so its invalid (integer) key is rejected. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml new file mode 100644 index 00000000000..0a6c0479fee --- /dev/null +++ b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml @@ -0,0 +1,15 @@ +bundle: + name: test-bundle + +include: + - override.yml + +presets: + name_prefix: "base-" + jobs_max_concurrent_runs: 7 + artifacts_dynamic_version: true + +resources: + jobs: + j: + name: job diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt new file mode 100644 index 00000000000..82b92b1e6ad --- /dev/null +++ b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt @@ -0,0 +1,9 @@ + +>>> [CLI] bundle validate -o json +{ + "presets": {}, + "job": { + "name": "job", + "max_concurrent_runs": 1 + } +} diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml new file mode 100644 index 00000000000..dc413ce0648 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml @@ -0,0 +1,4 @@ +presets: + name_prefix: "" + jobs_max_concurrent_runs: 0 + artifacts_dynamic_version: false diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script new file mode 100644 index 00000000000..c8d6c1aace9 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script @@ -0,0 +1,2 @@ +# An include can override fields with "", 0 and false. +trace $CLI bundle validate -o json | jq '{presets, job: (.resources.jobs.j | {name, max_concurrent_runs})}' diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml new file mode 100644 index 00000000000..5a6fbc1e893 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml @@ -0,0 +1,3 @@ +variables: + x: + default: incompatible-scalar diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml new file mode 100644 index 00000000000..61f0de50e9e --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml @@ -0,0 +1,2 @@ +bundle: + unexpected_after_failure: true diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml new file mode 100644 index 00000000000..fdd8bfa87b3 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml @@ -0,0 +1,12 @@ +bundle: + name: test-bundle + +include: + - a.yml + - b.yml + +variables: + x: + type: complex + default: + key: value diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt new file mode 100644 index 00000000000..f5f6443e809 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt @@ -0,0 +1,9 @@ + +>>> [CLI] bundle validate +Error: cannot merge map with string + +Name: test-bundle + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script new file mode 100644 index 00000000000..6f34e8010d2 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script @@ -0,0 +1,2 @@ +# Includes after one that fails to merge do not report their diagnostics. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml new file mode 100644 index 00000000000..43221f5f33a --- /dev/null +++ b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml @@ -0,0 +1,8 @@ +bundle: + name: test-bundle + +variables: + payload: + type: complex + default: + created: 2020-01-02 diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt new file mode 100644 index 00000000000..3c236fb1c2b --- /dev/null +++ b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt @@ -0,0 +1,10 @@ + +>>> [CLI] bundle validate +Warn: unable to convert typed configuration to dynamic configuration: cannot convert struct field to dynamic type "time": src=time.Date(2020, time.January, 2, 0, 0, 0, 0, time.UTC) ref=time.Date(2020, time.January, 2, 0, 0, 0, 0, time.UTC) +Error: exit error: cannot convert struct field to dynamic type "time": src=time.Date(2020, time.January, 2, 0, 0, 0, 0, time.UTC) ref=time.Date(2020, time.January, 2, 0, 0, 0, 0, time.UTC) + +Name: test-bundle + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/script b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/script new file mode 100644 index 00000000000..e4d20dafe80 --- /dev/null +++ b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/script @@ -0,0 +1,2 @@ +# A timestamp nested inside a complex variable default. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml new file mode 100644 index 00000000000..b1b00a5e46a --- /dev/null +++ b/acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml @@ -0,0 +1 @@ +Badness = "A valid config fails with an internal conversion error: the nested timestamp cannot be converted back to the dynamic configuration." diff --git a/acceptance/bundle/validate/parity/null_resources_container/databricks.yml b/acceptance/bundle/validate/parity/null_resources_container/databricks.yml new file mode 100644 index 00000000000..339364daf47 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_resources_container/databricks.yml @@ -0,0 +1,4 @@ +bundle: + name: test-bundle + +resources: null diff --git a/acceptance/bundle/validate/parity/null_resources_container/out.test.toml b/acceptance/bundle/validate/parity/null_resources_container/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_resources_container/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/null_resources_container/output.txt b/acceptance/bundle/validate/parity/null_resources_container/output.txt new file mode 100644 index 00000000000..1241151fda5 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_resources_container/output.txt @@ -0,0 +1,9 @@ + +>>> [CLI] bundle validate +Error: expected a map at "resources", found nil + +Name: test-bundle + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/null_resources_container/script b/acceptance/bundle/validate/parity/null_resources_container/script new file mode 100644 index 00000000000..253cc3d205d --- /dev/null +++ b/acceptance/bundle/validate/parity/null_resources_container/script @@ -0,0 +1,2 @@ +# resources: null is rejected. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml b/acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml new file mode 100644 index 00000000000..d68996de3ce --- /dev/null +++ b/acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml @@ -0,0 +1,8 @@ +bundle: + name: test-bundle + +resources: + jobs: + j: + name: test + schedule: null diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml b/acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt b/acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt new file mode 100644 index 00000000000..8cc844569f5 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt @@ -0,0 +1,13 @@ + +>>> [CLI] bundle validate -o json +Warning: required field "quartz_cron_expression" is not set + at resources.jobs.j.schedule + in databricks.yml:8:17 + +Warning: required field "timezone_id" is not set + at resources.jobs.j.schedule + in databricks.yml:8:17 + +{ + "schedule": null +} diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/script b/acceptance/bundle/validate/parity/null_schedule_default_materialization/script new file mode 100644 index 00000000000..0c5e31164ff --- /dev/null +++ b/acceptance/bundle/validate/parity/null_schedule_default_materialization/script @@ -0,0 +1,2 @@ +# Defaults are not applied under an explicitly null block (schedule stays null). +trace $CLI bundle validate -o json | jq '.resources.jobs.j | {schedule}' diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml new file mode 100644 index 00000000000..90df035dfcd --- /dev/null +++ b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml @@ -0,0 +1,7 @@ +bundle: + name: test-bundle + +variables: + snapshot: + type: complex + default: ${bundle.deployment.lock} diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt new file mode 100644 index 00000000000..3cbc766648c --- /dev/null +++ b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt @@ -0,0 +1,13 @@ + +>>> [CLI] bundle validate -o json +{ + "default": { + "enabled": false, + "force": false + }, + "type": "complex", + "value": { + "enabled": false, + "force": false + } +} diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script new file mode 100644 index 00000000000..12f958428b9 --- /dev/null +++ b/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script @@ -0,0 +1,2 @@ +# A reference to an unset struct resolves to the struct with its fields filled in. +trace $CLI bundle validate -o json | jq .variables.snapshot diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml b/acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml new file mode 100644 index 00000000000..3fffd4ad478 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml @@ -0,0 +1,16 @@ +bundle: + name: test-bundle + +variables: + bad: + type: complex + default: + x: 1 + +resources: + jobs: + j: + name: test + tags: + "bad.key[0]": ${var.bad} + good: ok diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml b/acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt b/acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt new file mode 100644 index 00000000000..07bfe6c7450 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt @@ -0,0 +1,9 @@ + +>>> [CLI] bundle validate -o json +Warning: expected string, found map + at resources.jobs.j.tags['bad.key[0]'] + in databricks.yml:15:23 + +{ + "good": "ok" +} diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/script b/acceptance/bundle/validate/parity/resolved_invalid_map_value/script new file mode 100644 index 00000000000..835edef52e9 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_map_value/script @@ -0,0 +1,2 @@ +# A map value whose reference resolves to the wrong type is dropped, with a warning at its path. +trace $CLI bundle validate -o json | jq .resources.jobs.j.tags diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml new file mode 100644 index 00000000000..90dd5f6d362 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml @@ -0,0 +1,15 @@ +bundle: + name: test-bundle + +variables: + bad: + type: complex + default: + x: 1 + +resources: + jobs: + j: + name: test + email_notifications: + on_failure: ["${var.bad}", "ok@example.test"] diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt new file mode 100644 index 00000000000..03952e879af --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt @@ -0,0 +1,11 @@ + +>>> [CLI] bundle validate -o json +Warning: expected string, found map + at resources.jobs.j.email_notifications.on_failure[0] + in databricks.yml:15:22 + +{ + "on_failure": [ + "ok@example.test" + ] +} diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script new file mode 100644 index 00000000000..61ba88b4d75 --- /dev/null +++ b/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script @@ -0,0 +1,2 @@ +# A list element whose reference resolves to the wrong type is dropped, with a warning at its path. +trace $CLI bundle validate -o json | jq .resources.jobs.j.email_notifications diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml new file mode 100644 index 00000000000..2583829e912 --- /dev/null +++ b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml @@ -0,0 +1,4 @@ +bundle: + name: test-bundle + +targets: false diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt new file mode 100644 index 00000000000..8020d180559 --- /dev/null +++ b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt @@ -0,0 +1,8 @@ + +>>> [CLI] bundle validate +Error: failed to rewrite [TEST_TMP_DIR]/databricks.yml: expected a map or sequence, found bool + + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script new file mode 100644 index 00000000000..4f218738be7 --- /dev/null +++ b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script @@ -0,0 +1,2 @@ +# A scalar targets section is an error. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml new file mode 100644 index 00000000000..38c97681a98 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml @@ -0,0 +1,13 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +targets: + dev: + variables: + x: + default: first + default: second diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt new file mode 100644 index 00000000000..5c429a0449c --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt @@ -0,0 +1,6 @@ + +>>> [CLI] bundle validate -t dev -o json +{ + "default": "second", + "value": "second" +} diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script new file mode 100644 index 00000000000..771eda950ef --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script @@ -0,0 +1,2 @@ +# With a duplicate default key in a target variable override, the last one wins and it is a full definition. +trace $CLI bundle validate -t dev -o json | jq .variables.x diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml new file mode 100644 index 00000000000..84eeb5183bd --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml @@ -0,0 +1,11 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +targets: + dev: + variables: + x: 2020-01-02 diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt new file mode 100644 index 00000000000..07eae4cbd80 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt @@ -0,0 +1,10 @@ + +>>> [CLI] bundle validate -t dev -o json +Warning: expected map, found time + at targets.dev.variables.x + in databricks.yml:11:10 + +{ + "default": "base", + "value": "base" +} diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script new file mode 100644 index 00000000000..e5418dbd3df --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script @@ -0,0 +1,2 @@ +# A timestamp as a target variable shorthand. +trace $CLI bundle validate -t dev -o json | jq .variables.x diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml new file mode 100644 index 00000000000..83f0c9957ac --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml @@ -0,0 +1 @@ +Badness = 'The timestamp shorthand is dropped with "expected map, found time" instead of being used as the default.' diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml new file mode 100644 index 00000000000..87f970afec3 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml @@ -0,0 +1,14 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + payload: + type: complex + default: &overrides + x: overridden + +targets: + dev: + variables: *overrides diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt new file mode 100644 index 00000000000..e324cc30cf1 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt @@ -0,0 +1,17 @@ + +>>> [CLI] bundle validate -t dev -o json +{ + "x": { + "default": "overridden", + "value": "overridden" + }, + "payload": { + "default": { + "x": "overridden" + }, + "type": "complex", + "value": { + "x": "overridden" + } + } +} diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script new file mode 100644 index 00000000000..56f3e365324 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script @@ -0,0 +1,2 @@ +# Target variables given as an alias of a complex default do not change that default. +trace $CLI bundle validate -t dev -o json | jq '.variables | {x, payload}' diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml new file mode 100644 index 00000000000..638c26ee0ad --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml @@ -0,0 +1,18 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +definitions: + a: &a + x: first + b: &b + x: second + +targets: + dev: + variables: + <<: *a + <<: *b diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt new file mode 100644 index 00000000000..2efbf8faf73 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt @@ -0,0 +1,9 @@ + +>>> [CLI] bundle validate -t dev +Error: duplicate YAML merge key ('<<') is not allowed; to merge multiple maps, use a sequence: '<<: [*anchor1, *anchor2]' + in databricks.yml:18:7 + + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script new file mode 100644 index 00000000000..e316f5883d8 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script @@ -0,0 +1,2 @@ +# Two '<<' keys in target variables are an error. +errcode trace $CLI bundle validate -t dev diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml new file mode 100644 index 00000000000..497c570326c --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml @@ -0,0 +1,15 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +definitions: + target_defaults: &target_defaults + variables: + x: overridden + +targets: + dev: + <<: *target_defaults diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt new file mode 100644 index 00000000000..d3be1ebf0eb --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt @@ -0,0 +1,6 @@ + +>>> [CLI] bundle validate -t dev -o json +{ + "default": "overridden", + "value": "overridden" +} diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script new file mode 100644 index 00000000000..4339582a088 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script @@ -0,0 +1,2 @@ +# Target variable shorthands inherited through a merge key on the target are applied. +trace $CLI bundle validate -t dev -o json | jq .variables.x diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml new file mode 100644 index 00000000000..c79cadfe0a8 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml @@ -0,0 +1,11 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +targets: + dev: + variables: + <<: {x: overridden} diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt new file mode 100644 index 00000000000..85dc1ee379b --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt @@ -0,0 +1,8 @@ + +>>> [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 diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script new file mode 100644 index 00000000000..1724b135e5e --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script @@ -0,0 +1,2 @@ +# An inline mapping as the value of '<<' in target variables. +errcode trace $CLI bundle validate diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml new file mode 100644 index 00000000000..84101454028 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml @@ -0,0 +1 @@ +Badness = "The YAML merge key spec allows a single mapping as the value of the merge key, but it is rejected." diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml new file mode 100644 index 00000000000..2c0bf7fe5b8 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml @@ -0,0 +1,15 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +definitions: + overrides: &overrides + x: overridden + +targets: + dev: + variables: + <<: [*overrides, 17] diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt new file mode 100644 index 00000000000..770f0193a58 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt @@ -0,0 +1,8 @@ + +>>> [CLI] bundle validate -t dev +Error: failed to load [TEST_TMP_DIR]/databricks.yml: yaml ([TEST_TMP_DIR]/databricks.yml:15:11): map merge requires map or sequence of maps as the value + + +Found 1 error + +Exit code: 1 diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script new file mode 100644 index 00000000000..497e2fefa39 --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script @@ -0,0 +1,2 @@ +# A scalar among the maps merged with '<<: [...]' is an error. +errcode trace $CLI bundle validate -t dev diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml new file mode 100644 index 00000000000..e5a45a569c9 --- /dev/null +++ b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml @@ -0,0 +1,15 @@ +bundle: + name: test-bundle + +variables: + x: + default: base + +definitions: + root_defaults: &root_defaults + targets: + dev: + variables: + x: overridden + +<<: *root_defaults diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt new file mode 100644 index 00000000000..d3be1ebf0eb --- /dev/null +++ b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt @@ -0,0 +1,6 @@ + +>>> [CLI] bundle validate -t dev -o json +{ + "default": "overridden", + "value": "overridden" +} diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script new file mode 100644 index 00000000000..b51a0e30bfe --- /dev/null +++ b/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script @@ -0,0 +1,2 @@ +# Target variable shorthands in a targets section inherited through a root merge key are applied. +trace $CLI bundle validate -t dev -o json | jq .variables.x diff --git a/acceptance/bundle/validate/parity/test.toml b/acceptance/bundle/validate/parity/test.toml new file mode 100644 index 00000000000..e9cede5e28a --- /dev/null +++ b/acceptance/bundle/validate/parity/test.toml @@ -0,0 +1,4 @@ +# Errors for invalid YAML print the full path of the file; normalize Windows separators. +[[Repls]] +Old = '\\' +New = '/' From ee878bd794b0894b8311b6703feff388b8803fcc Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Fri, 16 Oct 2026 11:26:25 +0200 Subject: [PATCH 2/8] Mark the unknown-field path for complex variables as Badness Co-authored-by: Isaac --- .../parity/complex_variable_unknown_field_location/test.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml new file mode 100644 index 00000000000..9c6a5a5bfd0 --- /dev/null +++ b/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml @@ -0,0 +1 @@ +Badness = "The unknown field is in the default of the complex variable, but the warning is reported at the resource that uses the variable (resources.jobs.j) rather than at variables.job_config.default." From 7dc6f3b5854cd149904df2fc388d829f82b79837 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Fri, 16 Oct 2026 11:29:34 +0200 Subject: [PATCH 3/8] Mark hidden diagnostics after a failed include merge as Badness Co-authored-by: Isaac --- .../include_merge_failure_short_circuits_diagnostics/test.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml new file mode 100644 index 00000000000..ba8a0fa1333 --- /dev/null +++ b/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml @@ -0,0 +1 @@ +Badness = "Diagnostics of includes loaded after the failed merge (the unknown field in b.yml) are not reported, although they do not depend on the merge." From cd9e91529cdfecae3d86580f2e9512ab21b9e7df Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Fri, 16 Oct 2026 13:37:07 +0200 Subject: [PATCH 4/8] Mark five more parity tests whose current behaviour is wrong as Badness Co-authored-by: Isaac --- .../parity/duplicate_key_shadowed_invalid_subtree/test.toml | 1 + .../bundle/validate/parity/null_resources_container/test.toml | 1 + .../parity/null_schedule_default_materialization/test.toml | 1 + .../validate/parity/scalar_targets_rewrite_diagnostic/test.toml | 1 + .../parity/target_variable_duplicate_default_key/test.toml | 1 + 5 files changed, 5 insertions(+) create mode 100644 acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml create mode 100644 acceptance/bundle/validate/parity/null_resources_container/test.toml create mode 100644 acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml create mode 100644 acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml create mode 100644 acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml new file mode 100644 index 00000000000..bad67f27bd1 --- /dev/null +++ b/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml @@ -0,0 +1 @@ +Badness = 'The duplicate tags key is accepted silently (the later one wins); YAML requires keys to be unique.' diff --git a/acceptance/bundle/validate/parity/null_resources_container/test.toml b/acceptance/bundle/validate/parity/null_resources_container/test.toml new file mode 100644 index 00000000000..022e0f2c7e9 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_resources_container/test.toml @@ -0,0 +1 @@ +Badness = 'An empty (null) resources section is an error without a location, while empty targets, variables or sync sections are accepted.' diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml b/acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml new file mode 100644 index 00000000000..68e81befdb7 --- /dev/null +++ b/acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml @@ -0,0 +1 @@ +Badness = 'An explicitly null schedule is reported as missing its required fields.' diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml new file mode 100644 index 00000000000..b1bb8151234 --- /dev/null +++ b/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml @@ -0,0 +1 @@ +Badness = 'The error names an internal step ("failed to rewrite") and has no location, instead of reporting a type error at targets.' diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml new file mode 100644 index 00000000000..42d04e8a1ef --- /dev/null +++ b/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml @@ -0,0 +1 @@ +Badness = 'The duplicate default key is accepted silently (the later one wins); YAML requires keys to be unique.' From 5982d91e796c211a59bfab88ab80d0217658e124 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 19 Oct 2026 14:13:10 +0200 Subject: [PATCH 5/8] Add acceptance test for duplicate mapping keys Records that duplicate keys are accepted without a warning, the later value replaces the earlier one as a whole (maps are not merged), with the processed JSON. Marked Badness: YAML requires keys to be unique. Co-authored-by: Isaac --- .../validate/duplicate_keys/databricks.yml | 16 ++++++++++++++++ .../validate/duplicate_keys/out.test.toml | 2 ++ .../bundle/validate/duplicate_keys/output.txt | 19 +++++++++++++++++++ .../bundle/validate/duplicate_keys/script | 5 +++++ .../bundle/validate/duplicate_keys/test.toml | 1 + 5 files changed, 43 insertions(+) create mode 100644 acceptance/bundle/validate/duplicate_keys/databricks.yml create mode 100644 acceptance/bundle/validate/duplicate_keys/out.test.toml create mode 100644 acceptance/bundle/validate/duplicate_keys/output.txt create mode 100644 acceptance/bundle/validate/duplicate_keys/script create mode 100644 acceptance/bundle/validate/duplicate_keys/test.toml diff --git a/acceptance/bundle/validate/duplicate_keys/databricks.yml b/acceptance/bundle/validate/duplicate_keys/databricks.yml new file mode 100644 index 00000000000..d29746866db --- /dev/null +++ b/acceptance/bundle/validate/duplicate_keys/databricks.yml @@ -0,0 +1,16 @@ +bundle: + name: test-bundle + +resources: + jobs: + j: + name: first + max_concurrent_runs: 1 + tags: + a: one + shared: first + name: second + max_concurrent_runs: 5 + tags: + b: two + shared: second diff --git a/acceptance/bundle/validate/duplicate_keys/out.test.toml b/acceptance/bundle/validate/duplicate_keys/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/duplicate_keys/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/duplicate_keys/output.txt b/acceptance/bundle/validate/duplicate_keys/output.txt new file mode 100644 index 00000000000..c395fba7081 --- /dev/null +++ b/acceptance/bundle/validate/duplicate_keys/output.txt @@ -0,0 +1,19 @@ + +>>> [CLI] bundle validate +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default + +Validation OK! + +>>> [CLI] bundle validate -o json +{ + "name": "second", + "max_concurrent_runs": 5, + "tags": { + "b": "two", + "shared": "second" + } +} diff --git a/acceptance/bundle/validate/duplicate_keys/script b/acceptance/bundle/validate/duplicate_keys/script new file mode 100644 index 00000000000..7b6d7caa93b --- /dev/null +++ b/acceptance/bundle/validate/duplicate_keys/script @@ -0,0 +1,5 @@ +# Duplicate keys in a mapping are accepted without a warning, although YAML requires keys to be unique. +trace $CLI bundle validate + +# The later value replaces the earlier one as a whole: maps are not merged ("a" is gone). +trace $CLI bundle validate -o json | jq '.resources.jobs.j | {name, max_concurrent_runs, tags}' diff --git a/acceptance/bundle/validate/duplicate_keys/test.toml b/acceptance/bundle/validate/duplicate_keys/test.toml new file mode 100644 index 00000000000..af65b8438c4 --- /dev/null +++ b/acceptance/bundle/validate/duplicate_keys/test.toml @@ -0,0 +1 @@ +Badness = "Duplicate keys are accepted silently (the later one wins); YAML requires keys to be unique." From 247059ce4332f01af394aed6858de8e6ec2f416d Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 19 Oct 2026 14:18:49 +0200 Subject: [PATCH 6/8] Move parity tests out of validate/parity into topic groups Groups: yaml_anchors (anchors and merge keys), yaml_duplicate_keys, variables, targets, includes, nulls, references. The directory only made sense as the name of the purpose of this PR, not as a topic. Co-authored-by: Isaac --- .../databricks.yml | 0 .../out.test.toml | 0 .../output.txt | 0 .../script | 0 .../clears_unforced_preset_values}/databricks.yml | 0 .../clears_unforced_preset_values}/out.test.toml | 0 .../clears_unforced_preset_values}/output.txt | 0 .../clears_unforced_preset_values}/override.yml | 0 .../clears_unforced_preset_values}/script | 0 .../merge_failure_short_circuits_diagnostics}/a.yml | 0 .../merge_failure_short_circuits_diagnostics}/b.yml | 0 .../merge_failure_short_circuits_diagnostics}/databricks.yml | 0 .../merge_failure_short_circuits_diagnostics}/out.test.toml | 0 .../merge_failure_short_circuits_diagnostics}/output.txt | 0 .../merge_failure_short_circuits_diagnostics}/script | 0 .../merge_failure_short_circuits_diagnostics}/test.toml | 0 .../resources_container}/databricks.yml | 0 .../resources_container}/out.test.toml | 0 .../resources_container}/output.txt | 0 .../resources_container}/script | 0 .../resources_container}/test.toml | 0 .../schedule_default_materialization}/databricks.yml | 0 .../schedule_default_materialization}/out.test.toml | 0 .../schedule_default_materialization}/output.txt | 0 .../schedule_default_materialization}/script | 0 .../schedule_default_materialization}/test.toml | 0 .../resolved_invalid_map_value/databricks.yml | 0 .../resolved_invalid_map_value}/out.test.toml | 0 .../resolved_invalid_map_value/output.txt | 0 .../{parity => references}/resolved_invalid_map_value/script | 0 .../resolved_invalid_sequence_item/databricks.yml | 0 .../resolved_invalid_sequence_item}/out.test.toml | 0 .../resolved_invalid_sequence_item/output.txt | 0 .../resolved_invalid_sequence_item/script | 0 .../to_omitted_struct_defaults}/databricks.yml | 0 .../to_omitted_struct_defaults}/out.test.toml | 0 .../to_omitted_struct_defaults}/output.txt | 0 .../to_omitted_struct_defaults}/script | 0 .../inherited_from_root_merge}/databricks.yml | 0 .../inherited_from_root_merge}/out.test.toml | 0 .../inherited_from_root_merge}/output.txt | 0 .../inherited_from_root_merge}/script | 0 .../scalar_rewrite_diagnostic}/databricks.yml | 0 .../scalar_rewrite_diagnostic}/out.test.toml | 0 .../scalar_rewrite_diagnostic}/output.txt | 0 .../scalar_rewrite_diagnostic}/script | 0 .../scalar_rewrite_diagnostic}/test.toml | 0 acceptance/bundle/validate/{parity => targets}/test.toml | 0 .../complex_default_nested_timestamp}/databricks.yml | 0 .../complex_default_nested_timestamp}/out.test.toml | 0 .../complex_default_nested_timestamp}/output.txt | 0 .../complex_default_nested_timestamp}/script | 0 .../complex_default_nested_timestamp}/test.toml | 0 .../complex_unknown_field_location}/databricks.yml | 0 .../complex_unknown_field_location}/out.test.toml | 0 .../complex_unknown_field_location}/output.txt | 0 .../complex_unknown_field_location}/script | 0 .../complex_unknown_field_location}/test.toml | 0 .../target_inherited_from_target_merge}/databricks.yml | 0 .../target_inherited_from_target_merge}/out.test.toml | 0 .../target_inherited_from_target_merge}/output.txt | 0 .../target_inherited_from_target_merge}/script | 0 .../target_timestamp_shorthand}/databricks.yml | 0 .../target_timestamp_shorthand}/out.test.toml | 0 .../target_timestamp_shorthand}/output.txt | 0 .../target_timestamp_shorthand}/script | 0 .../target_timestamp_shorthand}/test.toml | 0 .../alias_mutates_complex_default}/databricks.yml | 0 .../alias_mutates_complex_default}/out.test.toml | 0 .../alias_mutates_complex_default}/output.txt | 0 .../alias_mutates_complex_default}/script | 0 .../duplicate_merge_keys}/databricks.yml | 0 .../duplicate_merge_keys}/out.test.toml | 0 .../duplicate_merge_keys}/output.txt | 0 .../duplicate_merge_keys}/script | 0 .../inline_merge_mapping}/databricks.yml | 0 .../inline_merge_mapping}/out.test.toml | 0 .../inline_merge_mapping}/output.txt | 0 .../inline_merge_mapping}/script | 0 .../inline_merge_mapping}/test.toml | 0 .../invalid_merge_sequence_member}/databricks.yml | 0 .../invalid_merge_sequence_member}/out.test.toml | 0 .../invalid_merge_sequence_member}/output.txt | 0 .../invalid_merge_sequence_member}/script | 0 acceptance/bundle/validate/yaml_anchors/test.toml | 4 ++++ .../resource_fields}/databricks.yml | 0 .../resource_fields}/out.test.toml | 0 .../resource_fields}/output.txt | 0 .../resource_fields}/script | 0 .../resource_fields}/test.toml | 0 .../shadowed_invalid_subtree}/databricks.yml | 0 .../shadowed_invalid_subtree}/out.test.toml | 0 .../shadowed_invalid_subtree}/output.txt | 0 .../shadowed_invalid_subtree}/script | 0 .../shadowed_invalid_subtree}/test.toml | 0 .../target_variable_default}/databricks.yml | 0 .../target_variable_default}/out.test.toml | 0 .../target_variable_default}/output.txt | 0 .../target_variable_default}/script | 0 .../target_variable_default}/test.toml | 0 acceptance/bundle/validate/yaml_duplicate_keys/test.toml | 4 ++++ 101 files changed, 8 insertions(+) rename acceptance/bundle/validate/{parity/app_resource_override_unchanged_field_location => app_resource_duplicate_name_location}/databricks.yml (100%) rename acceptance/bundle/validate/{duplicate_keys => app_resource_duplicate_name_location}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/app_resource_override_unchanged_field_location => app_resource_duplicate_name_location}/output.txt (100%) rename acceptance/bundle/validate/{parity/app_resource_override_unchanged_field_location => app_resource_duplicate_name_location}/script (100%) rename acceptance/bundle/validate/{parity/include_clears_unforced_preset_values => includes/clears_unforced_preset_values}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/app_resource_override_unchanged_field_location => includes/clears_unforced_preset_values}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/include_clears_unforced_preset_values => includes/clears_unforced_preset_values}/output.txt (100%) rename acceptance/bundle/validate/{parity/include_clears_unforced_preset_values => includes/clears_unforced_preset_values}/override.yml (100%) rename acceptance/bundle/validate/{parity/include_clears_unforced_preset_values => includes/clears_unforced_preset_values}/script (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/a.yml (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/b.yml (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/complex_variable_unknown_field_location => includes/merge_failure_short_circuits_diagnostics}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/output.txt (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/script (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => includes/merge_failure_short_circuits_diagnostics}/test.toml (100%) rename acceptance/bundle/validate/{parity/null_resources_container => nulls/resources_container}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/duplicate_key_shadowed_invalid_subtree => nulls/resources_container}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/null_resources_container => nulls/resources_container}/output.txt (100%) rename acceptance/bundle/validate/{parity/null_resources_container => nulls/resources_container}/script (100%) rename acceptance/bundle/validate/{parity/null_resources_container => nulls/resources_container}/test.toml (100%) rename acceptance/bundle/validate/{parity/null_schedule_default_materialization => nulls/schedule_default_materialization}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/include_clears_unforced_preset_values => nulls/schedule_default_materialization}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/null_schedule_default_materialization => nulls/schedule_default_materialization}/output.txt (100%) rename acceptance/bundle/validate/{parity/null_schedule_default_materialization => nulls/schedule_default_materialization}/script (100%) rename acceptance/bundle/validate/{parity/null_schedule_default_materialization => nulls/schedule_default_materialization}/test.toml (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_map_value/databricks.yml (100%) rename acceptance/bundle/validate/{parity/include_merge_failure_short_circuits_diagnostics => references/resolved_invalid_map_value}/out.test.toml (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_map_value/output.txt (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_map_value/script (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_sequence_item/databricks.yml (100%) rename acceptance/bundle/validate/{parity/nested_timestamp_complex_default => references/resolved_invalid_sequence_item}/out.test.toml (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_sequence_item/output.txt (100%) rename acceptance/bundle/validate/{parity => references}/resolved_invalid_sequence_item/script (100%) rename acceptance/bundle/validate/{parity/reference_to_omitted_struct_defaults => references/to_omitted_struct_defaults}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/null_resources_container => references/to_omitted_struct_defaults}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/reference_to_omitted_struct_defaults => references/to_omitted_struct_defaults}/output.txt (100%) rename acceptance/bundle/validate/{parity/reference_to_omitted_struct_defaults => references/to_omitted_struct_defaults}/script (100%) rename acceptance/bundle/validate/{parity/targets_inherited_from_root_merge => targets/inherited_from_root_merge}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/null_schedule_default_materialization => targets/inherited_from_root_merge}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_inherited_from_target_merge => targets/inherited_from_root_merge}/output.txt (100%) rename acceptance/bundle/validate/{parity/targets_inherited_from_root_merge => targets/inherited_from_root_merge}/script (100%) rename acceptance/bundle/validate/{parity/scalar_targets_rewrite_diagnostic => targets/scalar_rewrite_diagnostic}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/reference_to_omitted_struct_defaults => targets/scalar_rewrite_diagnostic}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/scalar_targets_rewrite_diagnostic => targets/scalar_rewrite_diagnostic}/output.txt (100%) rename acceptance/bundle/validate/{parity/scalar_targets_rewrite_diagnostic => targets/scalar_rewrite_diagnostic}/script (100%) rename acceptance/bundle/validate/{parity/scalar_targets_rewrite_diagnostic => targets/scalar_rewrite_diagnostic}/test.toml (100%) rename acceptance/bundle/validate/{parity => targets}/test.toml (100%) rename acceptance/bundle/validate/{parity/nested_timestamp_complex_default => variables/complex_default_nested_timestamp}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/resolved_invalid_map_value => variables/complex_default_nested_timestamp}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/nested_timestamp_complex_default => variables/complex_default_nested_timestamp}/output.txt (100%) rename acceptance/bundle/validate/{parity/nested_timestamp_complex_default => variables/complex_default_nested_timestamp}/script (100%) rename acceptance/bundle/validate/{parity/nested_timestamp_complex_default => variables/complex_default_nested_timestamp}/test.toml (100%) rename acceptance/bundle/validate/{parity/complex_variable_unknown_field_location => variables/complex_unknown_field_location}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/resolved_invalid_sequence_item => variables/complex_unknown_field_location}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/complex_variable_unknown_field_location => variables/complex_unknown_field_location}/output.txt (100%) rename acceptance/bundle/validate/{parity/complex_variable_unknown_field_location => variables/complex_unknown_field_location}/script (100%) rename acceptance/bundle/validate/{parity/complex_variable_unknown_field_location => variables/complex_unknown_field_location}/test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_inherited_from_target_merge => variables/target_inherited_from_target_merge}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/scalar_targets_rewrite_diagnostic => variables/target_inherited_from_target_merge}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/targets_inherited_from_root_merge => variables/target_inherited_from_target_merge}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variables_inherited_from_target_merge => variables/target_inherited_from_target_merge}/script (100%) rename acceptance/bundle/validate/{parity/target_variable_timestamp_shorthand => variables/target_timestamp_shorthand}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variable_duplicate_default_key => variables/target_timestamp_shorthand}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variable_timestamp_shorthand => variables/target_timestamp_shorthand}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variable_timestamp_shorthand => variables/target_timestamp_shorthand}/script (100%) rename acceptance/bundle/validate/{parity/target_variable_timestamp_shorthand => variables/target_timestamp_shorthand}/test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_alias_mutates_complex_default => yaml_anchors/alias_mutates_complex_default}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variable_timestamp_shorthand => yaml_anchors/alias_mutates_complex_default}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_alias_mutates_complex_default => yaml_anchors/alias_mutates_complex_default}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variables_alias_mutates_complex_default => yaml_anchors/alias_mutates_complex_default}/script (100%) rename acceptance/bundle/validate/{parity/target_variables_duplicate_merge_keys => yaml_anchors/duplicate_merge_keys}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variables_alias_mutates_complex_default => yaml_anchors/duplicate_merge_keys}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_duplicate_merge_keys => yaml_anchors/duplicate_merge_keys}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variables_duplicate_merge_keys => yaml_anchors/duplicate_merge_keys}/script (100%) rename acceptance/bundle/validate/{parity/target_variables_inline_merge_mapping => yaml_anchors/inline_merge_mapping}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variables_duplicate_merge_keys => yaml_anchors/inline_merge_mapping}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_inline_merge_mapping => yaml_anchors/inline_merge_mapping}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variables_inline_merge_mapping => yaml_anchors/inline_merge_mapping}/script (100%) rename acceptance/bundle/validate/{parity/target_variables_inline_merge_mapping => yaml_anchors/inline_merge_mapping}/test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_invalid_merge_sequence_member => yaml_anchors/invalid_merge_sequence_member}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variables_inherited_from_target_merge => yaml_anchors/invalid_merge_sequence_member}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variables_invalid_merge_sequence_member => yaml_anchors/invalid_merge_sequence_member}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variables_invalid_merge_sequence_member => yaml_anchors/invalid_merge_sequence_member}/script (100%) create mode 100644 acceptance/bundle/validate/yaml_anchors/test.toml rename acceptance/bundle/validate/{duplicate_keys => yaml_duplicate_keys/resource_fields}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variables_inline_merge_mapping => yaml_duplicate_keys/resource_fields}/out.test.toml (100%) rename acceptance/bundle/validate/{duplicate_keys => yaml_duplicate_keys/resource_fields}/output.txt (100%) rename acceptance/bundle/validate/{duplicate_keys => yaml_duplicate_keys/resource_fields}/script (100%) rename acceptance/bundle/validate/{duplicate_keys => yaml_duplicate_keys/resource_fields}/test.toml (100%) rename acceptance/bundle/validate/{parity/duplicate_key_shadowed_invalid_subtree => yaml_duplicate_keys/shadowed_invalid_subtree}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/target_variables_invalid_merge_sequence_member => yaml_duplicate_keys/shadowed_invalid_subtree}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/duplicate_key_shadowed_invalid_subtree => yaml_duplicate_keys/shadowed_invalid_subtree}/output.txt (100%) rename acceptance/bundle/validate/{parity/duplicate_key_shadowed_invalid_subtree => yaml_duplicate_keys/shadowed_invalid_subtree}/script (100%) rename acceptance/bundle/validate/{parity/duplicate_key_shadowed_invalid_subtree => yaml_duplicate_keys/shadowed_invalid_subtree}/test.toml (100%) rename acceptance/bundle/validate/{parity/target_variable_duplicate_default_key => yaml_duplicate_keys/target_variable_default}/databricks.yml (100%) rename acceptance/bundle/validate/{parity/targets_inherited_from_root_merge => yaml_duplicate_keys/target_variable_default}/out.test.toml (100%) rename acceptance/bundle/validate/{parity/target_variable_duplicate_default_key => yaml_duplicate_keys/target_variable_default}/output.txt (100%) rename acceptance/bundle/validate/{parity/target_variable_duplicate_default_key => yaml_duplicate_keys/target_variable_default}/script (100%) rename acceptance/bundle/validate/{parity/target_variable_duplicate_default_key => yaml_duplicate_keys/target_variable_default}/test.toml (100%) create mode 100644 acceptance/bundle/validate/yaml_duplicate_keys/test.toml diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml b/acceptance/bundle/validate/app_resource_duplicate_name_location/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/databricks.yml rename to acceptance/bundle/validate/app_resource_duplicate_name_location/databricks.yml diff --git a/acceptance/bundle/validate/duplicate_keys/out.test.toml b/acceptance/bundle/validate/app_resource_duplicate_name_location/out.test.toml similarity index 100% rename from acceptance/bundle/validate/duplicate_keys/out.test.toml rename to acceptance/bundle/validate/app_resource_duplicate_name_location/out.test.toml diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt b/acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/output.txt rename to acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script b/acceptance/bundle/validate/app_resource_duplicate_name_location/script similarity index 100% rename from acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/script rename to acceptance/bundle/validate/app_resource_duplicate_name_location/script diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml b/acceptance/bundle/validate/includes/clears_unforced_preset_values/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/include_clears_unforced_preset_values/databricks.yml rename to acceptance/bundle/validate/includes/clears_unforced_preset_values/databricks.yml diff --git a/acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml b/acceptance/bundle/validate/includes/clears_unforced_preset_values/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/app_resource_override_unchanged_field_location/out.test.toml rename to acceptance/bundle/validate/includes/clears_unforced_preset_values/out.test.toml diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt b/acceptance/bundle/validate/includes/clears_unforced_preset_values/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/include_clears_unforced_preset_values/output.txt rename to acceptance/bundle/validate/includes/clears_unforced_preset_values/output.txt diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml b/acceptance/bundle/validate/includes/clears_unforced_preset_values/override.yml similarity index 100% rename from acceptance/bundle/validate/parity/include_clears_unforced_preset_values/override.yml rename to acceptance/bundle/validate/includes/clears_unforced_preset_values/override.yml diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script b/acceptance/bundle/validate/includes/clears_unforced_preset_values/script similarity index 100% rename from acceptance/bundle/validate/parity/include_clears_unforced_preset_values/script rename to acceptance/bundle/validate/includes/clears_unforced_preset_values/script diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/a.yml similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/a.yml rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/a.yml diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/b.yml similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/b.yml rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/b.yml diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/databricks.yml rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/databricks.yml diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/complex_variable_unknown_field_location/out.test.toml rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/out.test.toml diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/output.txt rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/output.txt diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/script similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/script rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/script diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/test.toml rename to acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml diff --git a/acceptance/bundle/validate/parity/null_resources_container/databricks.yml b/acceptance/bundle/validate/nulls/resources_container/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/null_resources_container/databricks.yml rename to acceptance/bundle/validate/nulls/resources_container/databricks.yml diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml b/acceptance/bundle/validate/nulls/resources_container/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/out.test.toml rename to acceptance/bundle/validate/nulls/resources_container/out.test.toml diff --git a/acceptance/bundle/validate/parity/null_resources_container/output.txt b/acceptance/bundle/validate/nulls/resources_container/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/null_resources_container/output.txt rename to acceptance/bundle/validate/nulls/resources_container/output.txt diff --git a/acceptance/bundle/validate/parity/null_resources_container/script b/acceptance/bundle/validate/nulls/resources_container/script similarity index 100% rename from acceptance/bundle/validate/parity/null_resources_container/script rename to acceptance/bundle/validate/nulls/resources_container/script diff --git a/acceptance/bundle/validate/parity/null_resources_container/test.toml b/acceptance/bundle/validate/nulls/resources_container/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/null_resources_container/test.toml rename to acceptance/bundle/validate/nulls/resources_container/test.toml diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml b/acceptance/bundle/validate/nulls/schedule_default_materialization/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/null_schedule_default_materialization/databricks.yml rename to acceptance/bundle/validate/nulls/schedule_default_materialization/databricks.yml diff --git a/acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml b/acceptance/bundle/validate/nulls/schedule_default_materialization/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/include_clears_unforced_preset_values/out.test.toml rename to acceptance/bundle/validate/nulls/schedule_default_materialization/out.test.toml diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt b/acceptance/bundle/validate/nulls/schedule_default_materialization/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/null_schedule_default_materialization/output.txt rename to acceptance/bundle/validate/nulls/schedule_default_materialization/output.txt diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/script b/acceptance/bundle/validate/nulls/schedule_default_materialization/script similarity index 100% rename from acceptance/bundle/validate/parity/null_schedule_default_materialization/script rename to acceptance/bundle/validate/nulls/schedule_default_materialization/script diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml b/acceptance/bundle/validate/nulls/schedule_default_materialization/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/null_schedule_default_materialization/test.toml rename to acceptance/bundle/validate/nulls/schedule_default_materialization/test.toml diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml b/acceptance/bundle/validate/references/resolved_invalid_map_value/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_map_value/databricks.yml rename to acceptance/bundle/validate/references/resolved_invalid_map_value/databricks.yml diff --git a/acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml b/acceptance/bundle/validate/references/resolved_invalid_map_value/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/include_merge_failure_short_circuits_diagnostics/out.test.toml rename to acceptance/bundle/validate/references/resolved_invalid_map_value/out.test.toml diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt b/acceptance/bundle/validate/references/resolved_invalid_map_value/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_map_value/output.txt rename to acceptance/bundle/validate/references/resolved_invalid_map_value/output.txt diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/script b/acceptance/bundle/validate/references/resolved_invalid_map_value/script similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_map_value/script rename to acceptance/bundle/validate/references/resolved_invalid_map_value/script diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml b/acceptance/bundle/validate/references/resolved_invalid_sequence_item/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_sequence_item/databricks.yml rename to acceptance/bundle/validate/references/resolved_invalid_sequence_item/databricks.yml diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml b/acceptance/bundle/validate/references/resolved_invalid_sequence_item/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/nested_timestamp_complex_default/out.test.toml rename to acceptance/bundle/validate/references/resolved_invalid_sequence_item/out.test.toml diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt b/acceptance/bundle/validate/references/resolved_invalid_sequence_item/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_sequence_item/output.txt rename to acceptance/bundle/validate/references/resolved_invalid_sequence_item/output.txt diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script b/acceptance/bundle/validate/references/resolved_invalid_sequence_item/script similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_sequence_item/script rename to acceptance/bundle/validate/references/resolved_invalid_sequence_item/script diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml b/acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/databricks.yml rename to acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml diff --git a/acceptance/bundle/validate/parity/null_resources_container/out.test.toml b/acceptance/bundle/validate/references/to_omitted_struct_defaults/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/null_resources_container/out.test.toml rename to acceptance/bundle/validate/references/to_omitted_struct_defaults/out.test.toml diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt b/acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/output.txt rename to acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script b/acceptance/bundle/validate/references/to_omitted_struct_defaults/script similarity index 100% rename from acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/script rename to acceptance/bundle/validate/references/to_omitted_struct_defaults/script diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml b/acceptance/bundle/validate/targets/inherited_from_root_merge/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/targets_inherited_from_root_merge/databricks.yml rename to acceptance/bundle/validate/targets/inherited_from_root_merge/databricks.yml diff --git a/acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml b/acceptance/bundle/validate/targets/inherited_from_root_merge/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/null_schedule_default_materialization/out.test.toml rename to acceptance/bundle/validate/targets/inherited_from_root_merge/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt b/acceptance/bundle/validate/targets/inherited_from_root_merge/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/output.txt rename to acceptance/bundle/validate/targets/inherited_from_root_merge/output.txt diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script b/acceptance/bundle/validate/targets/inherited_from_root_merge/script similarity index 100% rename from acceptance/bundle/validate/parity/targets_inherited_from_root_merge/script rename to acceptance/bundle/validate/targets/inherited_from_root_merge/script diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml b/acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/databricks.yml rename to acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/databricks.yml diff --git a/acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml b/acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/reference_to_omitted_struct_defaults/out.test.toml rename to acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/out.test.toml diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt b/acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/output.txt rename to acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/output.txt diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script b/acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/script similarity index 100% rename from acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/script rename to acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/script diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml b/acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/test.toml rename to acceptance/bundle/validate/targets/scalar_rewrite_diagnostic/test.toml diff --git a/acceptance/bundle/validate/parity/test.toml b/acceptance/bundle/validate/targets/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/test.toml rename to acceptance/bundle/validate/targets/test.toml diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml b/acceptance/bundle/validate/variables/complex_default_nested_timestamp/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/nested_timestamp_complex_default/databricks.yml rename to acceptance/bundle/validate/variables/complex_default_nested_timestamp/databricks.yml diff --git a/acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml b/acceptance/bundle/validate/variables/complex_default_nested_timestamp/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_map_value/out.test.toml rename to acceptance/bundle/validate/variables/complex_default_nested_timestamp/out.test.toml diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt b/acceptance/bundle/validate/variables/complex_default_nested_timestamp/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/nested_timestamp_complex_default/output.txt rename to acceptance/bundle/validate/variables/complex_default_nested_timestamp/output.txt diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/script b/acceptance/bundle/validate/variables/complex_default_nested_timestamp/script similarity index 100% rename from acceptance/bundle/validate/parity/nested_timestamp_complex_default/script rename to acceptance/bundle/validate/variables/complex_default_nested_timestamp/script diff --git a/acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml b/acceptance/bundle/validate/variables/complex_default_nested_timestamp/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/nested_timestamp_complex_default/test.toml rename to acceptance/bundle/validate/variables/complex_default_nested_timestamp/test.toml diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml b/acceptance/bundle/validate/variables/complex_unknown_field_location/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/complex_variable_unknown_field_location/databricks.yml rename to acceptance/bundle/validate/variables/complex_unknown_field_location/databricks.yml diff --git a/acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml b/acceptance/bundle/validate/variables/complex_unknown_field_location/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/resolved_invalid_sequence_item/out.test.toml rename to acceptance/bundle/validate/variables/complex_unknown_field_location/out.test.toml diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt b/acceptance/bundle/validate/variables/complex_unknown_field_location/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/complex_variable_unknown_field_location/output.txt rename to acceptance/bundle/validate/variables/complex_unknown_field_location/output.txt diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script b/acceptance/bundle/validate/variables/complex_unknown_field_location/script similarity index 100% rename from acceptance/bundle/validate/parity/complex_variable_unknown_field_location/script rename to acceptance/bundle/validate/variables/complex_unknown_field_location/script diff --git a/acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml b/acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/complex_variable_unknown_field_location/test.toml rename to acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml b/acceptance/bundle/validate/variables/target_inherited_from_target_merge/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/databricks.yml rename to acceptance/bundle/validate/variables/target_inherited_from_target_merge/databricks.yml diff --git a/acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml b/acceptance/bundle/validate/variables/target_inherited_from_target_merge/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/scalar_targets_rewrite_diagnostic/out.test.toml rename to acceptance/bundle/validate/variables/target_inherited_from_target_merge/out.test.toml diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt b/acceptance/bundle/validate/variables/target_inherited_from_target_merge/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/targets_inherited_from_root_merge/output.txt rename to acceptance/bundle/validate/variables/target_inherited_from_target_merge/output.txt diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script b/acceptance/bundle/validate/variables/target_inherited_from_target_merge/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/script rename to acceptance/bundle/validate/variables/target_inherited_from_target_merge/script diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml b/acceptance/bundle/validate/variables/target_timestamp_shorthand/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/databricks.yml rename to acceptance/bundle/validate/variables/target_timestamp_shorthand/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml b/acceptance/bundle/validate/variables/target_timestamp_shorthand/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_duplicate_default_key/out.test.toml rename to acceptance/bundle/validate/variables/target_timestamp_shorthand/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt b/acceptance/bundle/validate/variables/target_timestamp_shorthand/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/output.txt rename to acceptance/bundle/validate/variables/target_timestamp_shorthand/output.txt diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script b/acceptance/bundle/validate/variables/target_timestamp_shorthand/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/script rename to acceptance/bundle/validate/variables/target_timestamp_shorthand/script diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml b/acceptance/bundle/validate/variables/target_timestamp_shorthand/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/test.toml rename to acceptance/bundle/validate/variables/target_timestamp_shorthand/test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml b/acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml b/acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_timestamp_shorthand/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt b/acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/output.txt rename to acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/output.txt diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script b/acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/script rename to acceptance/bundle/validate/yaml_anchors/alias_mutates_complex_default/script diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_alias_mutates_complex_default/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/output.txt rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/output.txt diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/script rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_keys/script diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_duplicate_merge_keys/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/output.txt rename to acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/output.txt diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/script rename to acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/script diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml b/acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/test.toml rename to acceptance/bundle/validate/yaml_anchors/inline_merge_mapping/test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml b/acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml b/acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inherited_from_target_merge/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt b/acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/output.txt rename to acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/output.txt diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script b/acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/script rename to acceptance/bundle/validate/yaml_anchors/invalid_merge_sequence_member/script diff --git a/acceptance/bundle/validate/yaml_anchors/test.toml b/acceptance/bundle/validate/yaml_anchors/test.toml new file mode 100644 index 00000000000..e9cede5e28a --- /dev/null +++ b/acceptance/bundle/validate/yaml_anchors/test.toml @@ -0,0 +1,4 @@ +# Errors for invalid YAML print the full path of the file; normalize Windows separators. +[[Repls]] +Old = '\\' +New = '/' diff --git a/acceptance/bundle/validate/duplicate_keys/databricks.yml b/acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/databricks.yml similarity index 100% rename from acceptance/bundle/validate/duplicate_keys/databricks.yml rename to acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_inline_merge_mapping/out.test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/out.test.toml diff --git a/acceptance/bundle/validate/duplicate_keys/output.txt b/acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/output.txt similarity index 100% rename from acceptance/bundle/validate/duplicate_keys/output.txt rename to acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/output.txt diff --git a/acceptance/bundle/validate/duplicate_keys/script b/acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/script similarity index 100% rename from acceptance/bundle/validate/duplicate_keys/script rename to acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/script diff --git a/acceptance/bundle/validate/duplicate_keys/test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/test.toml similarity index 100% rename from acceptance/bundle/validate/duplicate_keys/test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/resource_fields/test.toml diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml b/acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/databricks.yml rename to acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/databricks.yml diff --git a/acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variables_invalid_merge_sequence_member/out.test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/out.test.toml diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt b/acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/output.txt rename to acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/output.txt diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script b/acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/script similarity index 100% rename from acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/script rename to acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/script diff --git a/acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/duplicate_key_shadowed_invalid_subtree/test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/test.toml diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml b/acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/databricks.yml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_duplicate_default_key/databricks.yml rename to acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/databricks.yml diff --git a/acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/out.test.toml similarity index 100% rename from acceptance/bundle/validate/parity/targets_inherited_from_root_merge/out.test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/out.test.toml diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt b/acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/output.txt similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_duplicate_default_key/output.txt rename to acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/output.txt diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script b/acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/script similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_duplicate_default_key/script rename to acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/script diff --git a/acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/test.toml similarity index 100% rename from acceptance/bundle/validate/parity/target_variable_duplicate_default_key/test.toml rename to acceptance/bundle/validate/yaml_duplicate_keys/target_variable_default/test.toml diff --git a/acceptance/bundle/validate/yaml_duplicate_keys/test.toml b/acceptance/bundle/validate/yaml_duplicate_keys/test.toml new file mode 100644 index 00000000000..e9cede5e28a --- /dev/null +++ b/acceptance/bundle/validate/yaml_duplicate_keys/test.toml @@ -0,0 +1,4 @@ +# Errors for invalid YAML print the full path of the file; normalize Windows separators. +[[Repls]] +Old = '\\' +New = '/' From 6c521f08334d9f2bdb227434c3d25c7653ed251f Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 19 Oct 2026 14:24:34 +0200 Subject: [PATCH 7/8] Group the remaining yaml/variable/include validate tests; fix Badness - Move existing anchor, merge-key, complex-variable and include-location tests into the new topic groups. - variables/complex_unknown_field_location is not Badness: the warning is reported at the key in the variable default, like any unknown field. - includes/merge_failure_short_circuits_diagnostics: the merge error also has no location. - app_resource_duplicate_name_location shows the merged entries as JSON. Co-authored-by: Isaac --- .../output.txt | 15 +++++++++++++++ .../app_resource_duplicate_name_location/script | 5 ++++- .../locations}/databricks.yml | 0 .../locations}/out.test.toml | 0 .../locations}/output.dev.json | 0 .../locations}/output.prod.json | 0 .../locations}/output.txt | 0 .../locations}/override.yml | 0 .../locations}/resources/job.yml | 0 .../locations}/script | 0 .../locations}/src/dev.py | 0 .../locations}/src/prod.py | 0 .../test.toml | 2 +- .../complex_default_merge}/a.yml | 0 .../complex_default_merge}/b.yml | 0 .../complex_default_merge}/databricks.yml | 0 .../complex_default_merge}/out.test.toml | 0 .../complex_default_merge}/output.txt | 0 .../complex_default_merge}/script | 0 .../complex_unknown_field_location/test.toml | 1 - .../overrides_file_complex_path}/databricks.yml | 0 .../overrides_file_complex_path}/out.test.toml | 0 .../overrides_file_complex_path}/output.txt | 0 .../overrides_file_complex_path}/script | 0 .../overrides_file_complex_path}/src/lib.whl | 0 .../overrides_file_complex_path}/src/main.py | 0 .../overrides_file_complex_path}/test.toml | 0 .../variable-overrides.json | 0 .../containers}/databricks.yml | 0 .../containers}/out.test.toml | 0 .../containers}/output.txt | 0 .../containers}/script | 0 .../cycle_nested}/databricks.yml | 0 .../cycle_nested}/out.test.toml | 0 .../cycle_nested}/output.txt | 0 .../cycle_nested}/script | 0 .../cycle_nested}/test.toml | 0 .../definitions}/databricks.yml | 0 .../definitions}/out.test.toml | 0 .../definitions}/output.txt | 0 .../definitions}/script | 0 .../databricks.yml | 0 .../duplicate_merge_key_in_cluster}/out.test.toml | 0 .../duplicate_merge_key_in_cluster}/output.txt | 0 .../duplicate_merge_key_in_cluster}/script | 0 .../target_variable_full_def}/databricks.yml | 0 .../target_variable_full_def}/out.test.toml | 0 .../target_variable_full_def}/output.txt | 0 .../target_variable_full_def}/script | 0 .../target_variable_precedence}/databricks.yml | 0 .../target_variable_precedence}/out.test.toml | 0 .../target_variable_precedence}/output.txt | 0 .../target_variable_precedence}/script | 0 .../target_variable_precedence}/test.toml | 0 .../databricks.yml | 0 .../out.test.toml | 0 .../target_variable_shorthand_alias/output.txt | 0 .../target_variable_shorthand_alias/script | 0 58 files changed, 20 insertions(+), 3 deletions(-) rename acceptance/bundle/validate/{include_locations => includes/locations}/databricks.yml (100%) rename acceptance/bundle/validate/{anchor_containers => includes/locations}/out.test.toml (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/output.dev.json (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/output.prod.json (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/output.txt (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/override.yml (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/resources/job.yml (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/script (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/src/dev.py (100%) rename acceptance/bundle/validate/{include_locations => includes/locations}/src/prod.py (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/a.yml (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/b.yml (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/databricks.yml (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/out.test.toml (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/output.txt (100%) rename acceptance/bundle/validate/{complex_variable_default_merge => variables/complex_default_merge}/script (100%) delete mode 100644 acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/databricks.yml (100%) rename acceptance/bundle/validate/{definitions_yaml_anchors => variables/overrides_file_complex_path}/out.test.toml (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/output.txt (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/script (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/src/lib.whl (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/src/main.py (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/test.toml (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => variables/overrides_file_complex_path}/variable-overrides.json (100%) rename acceptance/bundle/validate/{anchor_containers => yaml_anchors/containers}/databricks.yml (100%) rename acceptance/bundle/validate/{duplicate_yaml_merge_key => yaml_anchors/containers}/out.test.toml (100%) rename acceptance/bundle/validate/{anchor_containers => yaml_anchors/containers}/output.txt (100%) rename acceptance/bundle/validate/{anchor_containers => yaml_anchors/containers}/script (100%) rename acceptance/bundle/validate/{yaml_anchor_cycle_nested => yaml_anchors/cycle_nested}/databricks.yml (100%) rename acceptance/bundle/validate/{include_locations => yaml_anchors/cycle_nested}/out.test.toml (100%) rename acceptance/bundle/validate/{yaml_anchor_cycle_nested => yaml_anchors/cycle_nested}/output.txt (100%) rename acceptance/bundle/validate/{yaml_anchor_cycle_nested => yaml_anchors/cycle_nested}/script (100%) rename acceptance/bundle/validate/{yaml_anchor_cycle_nested => yaml_anchors/cycle_nested}/test.toml (100%) rename acceptance/bundle/validate/{definitions_yaml_anchors => yaml_anchors/definitions}/databricks.yml (100%) rename acceptance/bundle/validate/{target_variable_full_def_merge_key => yaml_anchors/definitions}/out.test.toml (100%) rename acceptance/bundle/validate/{definitions_yaml_anchors => yaml_anchors/definitions}/output.txt (100%) rename acceptance/bundle/validate/{definitions_yaml_anchors => yaml_anchors/definitions}/script (100%) rename acceptance/bundle/validate/{duplicate_yaml_merge_key => yaml_anchors/duplicate_merge_key_in_cluster}/databricks.yml (100%) rename acceptance/bundle/validate/{target_variable_merge_key_precedence => yaml_anchors/duplicate_merge_key_in_cluster}/out.test.toml (100%) rename acceptance/bundle/validate/{duplicate_yaml_merge_key => yaml_anchors/duplicate_merge_key_in_cluster}/output.txt (100%) rename acceptance/bundle/validate/{duplicate_yaml_merge_key => yaml_anchors/duplicate_merge_key_in_cluster}/script (100%) rename acceptance/bundle/validate/{target_variable_full_def_merge_key => yaml_anchors/target_variable_full_def}/databricks.yml (100%) rename acceptance/bundle/validate/{target_variable_shorthand_alias => yaml_anchors/target_variable_full_def}/out.test.toml (100%) rename acceptance/bundle/validate/{target_variable_full_def_merge_key => yaml_anchors/target_variable_full_def}/output.txt (100%) rename acceptance/bundle/validate/{target_variable_full_def_merge_key => yaml_anchors/target_variable_full_def}/script (100%) rename acceptance/bundle/validate/{target_variable_merge_key_precedence => yaml_anchors/target_variable_precedence}/databricks.yml (100%) rename acceptance/bundle/validate/{variable_overrides_file_complex_path => yaml_anchors/target_variable_precedence}/out.test.toml (100%) rename acceptance/bundle/validate/{target_variable_merge_key_precedence => yaml_anchors/target_variable_precedence}/output.txt (100%) rename acceptance/bundle/validate/{target_variable_merge_key_precedence => yaml_anchors/target_variable_precedence}/script (100%) rename acceptance/bundle/validate/{target_variable_merge_key_precedence => yaml_anchors/target_variable_precedence}/test.toml (100%) rename acceptance/bundle/validate/{ => yaml_anchors}/target_variable_shorthand_alias/databricks.yml (100%) rename acceptance/bundle/validate/{yaml_anchor_cycle_nested => yaml_anchors/target_variable_shorthand_alias}/out.test.toml (100%) rename acceptance/bundle/validate/{ => yaml_anchors}/target_variable_shorthand_alias/output.txt (100%) rename acceptance/bundle/validate/{ => yaml_anchors}/target_variable_shorthand_alias/script (100%) diff --git a/acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt b/acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt index d0b32736675..a8eac9a3ace 100644 --- a/acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt +++ b/acceptance/bundle/validate/app_resource_duplicate_name_location/output.txt @@ -11,3 +11,18 @@ Workspace: Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default Found 1 warning + +>>> [CLI] bundle validate -o json +Warning: invalid value "INVALID" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER] + at resources.apps.app.resources[0].job.permission + in databricks.yml:13:25 + +[ + { + "job": { + "id": "2", + "permission": "INVALID" + }, + "name": "job" + } +] diff --git a/acceptance/bundle/validate/app_resource_duplicate_name_location/script b/acceptance/bundle/validate/app_resource_duplicate_name_location/script index e9222e98058..3531c01dcef 100644 --- a/acceptance/bundle/validate/app_resource_duplicate_name_location/script +++ b/acceptance/bundle/validate/app_resource_duplicate_name_location/script @@ -1,2 +1,5 @@ -# A diagnostic on a field of a duplicated app resource entry points at the first entry. +# A diagnostic on a field of a duplicated app resource entry points at the first entry when the duplicate's value is the same. errcode trace $CLI bundle validate + +# The entries are merged by name, the later one wins. +trace $CLI bundle validate -o json | jq .resources.apps.app.resources diff --git a/acceptance/bundle/validate/include_locations/databricks.yml b/acceptance/bundle/validate/includes/locations/databricks.yml similarity index 100% rename from acceptance/bundle/validate/include_locations/databricks.yml rename to acceptance/bundle/validate/includes/locations/databricks.yml diff --git a/acceptance/bundle/validate/anchor_containers/out.test.toml b/acceptance/bundle/validate/includes/locations/out.test.toml similarity index 100% rename from acceptance/bundle/validate/anchor_containers/out.test.toml rename to acceptance/bundle/validate/includes/locations/out.test.toml diff --git a/acceptance/bundle/validate/include_locations/output.dev.json b/acceptance/bundle/validate/includes/locations/output.dev.json similarity index 100% rename from acceptance/bundle/validate/include_locations/output.dev.json rename to acceptance/bundle/validate/includes/locations/output.dev.json diff --git a/acceptance/bundle/validate/include_locations/output.prod.json b/acceptance/bundle/validate/includes/locations/output.prod.json similarity index 100% rename from acceptance/bundle/validate/include_locations/output.prod.json rename to acceptance/bundle/validate/includes/locations/output.prod.json diff --git a/acceptance/bundle/validate/include_locations/output.txt b/acceptance/bundle/validate/includes/locations/output.txt similarity index 100% rename from acceptance/bundle/validate/include_locations/output.txt rename to acceptance/bundle/validate/includes/locations/output.txt diff --git a/acceptance/bundle/validate/include_locations/override.yml b/acceptance/bundle/validate/includes/locations/override.yml similarity index 100% rename from acceptance/bundle/validate/include_locations/override.yml rename to acceptance/bundle/validate/includes/locations/override.yml diff --git a/acceptance/bundle/validate/include_locations/resources/job.yml b/acceptance/bundle/validate/includes/locations/resources/job.yml similarity index 100% rename from acceptance/bundle/validate/include_locations/resources/job.yml rename to acceptance/bundle/validate/includes/locations/resources/job.yml diff --git a/acceptance/bundle/validate/include_locations/script b/acceptance/bundle/validate/includes/locations/script similarity index 100% rename from acceptance/bundle/validate/include_locations/script rename to acceptance/bundle/validate/includes/locations/script diff --git a/acceptance/bundle/validate/include_locations/src/dev.py b/acceptance/bundle/validate/includes/locations/src/dev.py similarity index 100% rename from acceptance/bundle/validate/include_locations/src/dev.py rename to acceptance/bundle/validate/includes/locations/src/dev.py diff --git a/acceptance/bundle/validate/include_locations/src/prod.py b/acceptance/bundle/validate/includes/locations/src/prod.py similarity index 100% rename from acceptance/bundle/validate/include_locations/src/prod.py rename to acceptance/bundle/validate/includes/locations/src/prod.py diff --git a/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml index ba8a0fa1333..b11d0b76cd4 100644 --- a/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml +++ b/acceptance/bundle/validate/includes/merge_failure_short_circuits_diagnostics/test.toml @@ -1 +1 @@ -Badness = "Diagnostics of includes loaded after the failed merge (the unknown field in b.yml) are not reported, although they do not depend on the merge." +Badness = "The merge error has no location or path, and diagnostics of includes loaded after the failed merge (the unknown field in b.yml) are not reported, although they do not depend on the merge." diff --git a/acceptance/bundle/validate/complex_variable_default_merge/a.yml b/acceptance/bundle/validate/variables/complex_default_merge/a.yml similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/a.yml rename to acceptance/bundle/validate/variables/complex_default_merge/a.yml diff --git a/acceptance/bundle/validate/complex_variable_default_merge/b.yml b/acceptance/bundle/validate/variables/complex_default_merge/b.yml similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/b.yml rename to acceptance/bundle/validate/variables/complex_default_merge/b.yml diff --git a/acceptance/bundle/validate/complex_variable_default_merge/databricks.yml b/acceptance/bundle/validate/variables/complex_default_merge/databricks.yml similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/databricks.yml rename to acceptance/bundle/validate/variables/complex_default_merge/databricks.yml diff --git a/acceptance/bundle/validate/complex_variable_default_merge/out.test.toml b/acceptance/bundle/validate/variables/complex_default_merge/out.test.toml similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/out.test.toml rename to acceptance/bundle/validate/variables/complex_default_merge/out.test.toml diff --git a/acceptance/bundle/validate/complex_variable_default_merge/output.txt b/acceptance/bundle/validate/variables/complex_default_merge/output.txt similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/output.txt rename to acceptance/bundle/validate/variables/complex_default_merge/output.txt diff --git a/acceptance/bundle/validate/complex_variable_default_merge/script b/acceptance/bundle/validate/variables/complex_default_merge/script similarity index 100% rename from acceptance/bundle/validate/complex_variable_default_merge/script rename to acceptance/bundle/validate/variables/complex_default_merge/script diff --git a/acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml b/acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml deleted file mode 100644 index 9c6a5a5bfd0..00000000000 --- a/acceptance/bundle/validate/variables/complex_unknown_field_location/test.toml +++ /dev/null @@ -1 +0,0 @@ -Badness = "The unknown field is in the default of the complex variable, but the warning is reported at the resource that uses the variable (resources.jobs.j) rather than at variables.job_config.default." diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/databricks.yml b/acceptance/bundle/validate/variables/overrides_file_complex_path/databricks.yml similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/databricks.yml rename to acceptance/bundle/validate/variables/overrides_file_complex_path/databricks.yml diff --git a/acceptance/bundle/validate/definitions_yaml_anchors/out.test.toml b/acceptance/bundle/validate/variables/overrides_file_complex_path/out.test.toml similarity index 100% rename from acceptance/bundle/validate/definitions_yaml_anchors/out.test.toml rename to acceptance/bundle/validate/variables/overrides_file_complex_path/out.test.toml diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/output.txt b/acceptance/bundle/validate/variables/overrides_file_complex_path/output.txt similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/output.txt rename to acceptance/bundle/validate/variables/overrides_file_complex_path/output.txt diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/script b/acceptance/bundle/validate/variables/overrides_file_complex_path/script similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/script rename to acceptance/bundle/validate/variables/overrides_file_complex_path/script diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/src/lib.whl b/acceptance/bundle/validate/variables/overrides_file_complex_path/src/lib.whl similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/src/lib.whl rename to acceptance/bundle/validate/variables/overrides_file_complex_path/src/lib.whl diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/src/main.py b/acceptance/bundle/validate/variables/overrides_file_complex_path/src/main.py similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/src/main.py rename to acceptance/bundle/validate/variables/overrides_file_complex_path/src/main.py diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/test.toml b/acceptance/bundle/validate/variables/overrides_file_complex_path/test.toml similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/test.toml rename to acceptance/bundle/validate/variables/overrides_file_complex_path/test.toml diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/variable-overrides.json b/acceptance/bundle/validate/variables/overrides_file_complex_path/variable-overrides.json similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/variable-overrides.json rename to acceptance/bundle/validate/variables/overrides_file_complex_path/variable-overrides.json diff --git a/acceptance/bundle/validate/anchor_containers/databricks.yml b/acceptance/bundle/validate/yaml_anchors/containers/databricks.yml similarity index 100% rename from acceptance/bundle/validate/anchor_containers/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/containers/databricks.yml diff --git a/acceptance/bundle/validate/duplicate_yaml_merge_key/out.test.toml b/acceptance/bundle/validate/yaml_anchors/containers/out.test.toml similarity index 100% rename from acceptance/bundle/validate/duplicate_yaml_merge_key/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/containers/out.test.toml diff --git a/acceptance/bundle/validate/anchor_containers/output.txt b/acceptance/bundle/validate/yaml_anchors/containers/output.txt similarity index 100% rename from acceptance/bundle/validate/anchor_containers/output.txt rename to acceptance/bundle/validate/yaml_anchors/containers/output.txt diff --git a/acceptance/bundle/validate/anchor_containers/script b/acceptance/bundle/validate/yaml_anchors/containers/script similarity index 100% rename from acceptance/bundle/validate/anchor_containers/script rename to acceptance/bundle/validate/yaml_anchors/containers/script diff --git a/acceptance/bundle/validate/yaml_anchor_cycle_nested/databricks.yml b/acceptance/bundle/validate/yaml_anchors/cycle_nested/databricks.yml similarity index 100% rename from acceptance/bundle/validate/yaml_anchor_cycle_nested/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/cycle_nested/databricks.yml diff --git a/acceptance/bundle/validate/include_locations/out.test.toml b/acceptance/bundle/validate/yaml_anchors/cycle_nested/out.test.toml similarity index 100% rename from acceptance/bundle/validate/include_locations/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/cycle_nested/out.test.toml diff --git a/acceptance/bundle/validate/yaml_anchor_cycle_nested/output.txt b/acceptance/bundle/validate/yaml_anchors/cycle_nested/output.txt similarity index 100% rename from acceptance/bundle/validate/yaml_anchor_cycle_nested/output.txt rename to acceptance/bundle/validate/yaml_anchors/cycle_nested/output.txt diff --git a/acceptance/bundle/validate/yaml_anchor_cycle_nested/script b/acceptance/bundle/validate/yaml_anchors/cycle_nested/script similarity index 100% rename from acceptance/bundle/validate/yaml_anchor_cycle_nested/script rename to acceptance/bundle/validate/yaml_anchors/cycle_nested/script diff --git a/acceptance/bundle/validate/yaml_anchor_cycle_nested/test.toml b/acceptance/bundle/validate/yaml_anchors/cycle_nested/test.toml similarity index 100% rename from acceptance/bundle/validate/yaml_anchor_cycle_nested/test.toml rename to acceptance/bundle/validate/yaml_anchors/cycle_nested/test.toml diff --git a/acceptance/bundle/validate/definitions_yaml_anchors/databricks.yml b/acceptance/bundle/validate/yaml_anchors/definitions/databricks.yml similarity index 100% rename from acceptance/bundle/validate/definitions_yaml_anchors/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/definitions/databricks.yml diff --git a/acceptance/bundle/validate/target_variable_full_def_merge_key/out.test.toml b/acceptance/bundle/validate/yaml_anchors/definitions/out.test.toml similarity index 100% rename from acceptance/bundle/validate/target_variable_full_def_merge_key/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/definitions/out.test.toml diff --git a/acceptance/bundle/validate/definitions_yaml_anchors/output.txt b/acceptance/bundle/validate/yaml_anchors/definitions/output.txt similarity index 100% rename from acceptance/bundle/validate/definitions_yaml_anchors/output.txt rename to acceptance/bundle/validate/yaml_anchors/definitions/output.txt diff --git a/acceptance/bundle/validate/definitions_yaml_anchors/script b/acceptance/bundle/validate/yaml_anchors/definitions/script similarity index 100% rename from acceptance/bundle/validate/definitions_yaml_anchors/script rename to acceptance/bundle/validate/yaml_anchors/definitions/script diff --git a/acceptance/bundle/validate/duplicate_yaml_merge_key/databricks.yml b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/databricks.yml similarity index 100% rename from acceptance/bundle/validate/duplicate_yaml_merge_key/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/databricks.yml diff --git a/acceptance/bundle/validate/target_variable_merge_key_precedence/out.test.toml b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/out.test.toml similarity index 100% rename from acceptance/bundle/validate/target_variable_merge_key_precedence/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/out.test.toml diff --git a/acceptance/bundle/validate/duplicate_yaml_merge_key/output.txt b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/output.txt similarity index 100% rename from acceptance/bundle/validate/duplicate_yaml_merge_key/output.txt rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/output.txt diff --git a/acceptance/bundle/validate/duplicate_yaml_merge_key/script b/acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/script similarity index 100% rename from acceptance/bundle/validate/duplicate_yaml_merge_key/script rename to acceptance/bundle/validate/yaml_anchors/duplicate_merge_key_in_cluster/script diff --git a/acceptance/bundle/validate/target_variable_full_def_merge_key/databricks.yml b/acceptance/bundle/validate/yaml_anchors/target_variable_full_def/databricks.yml similarity index 100% rename from acceptance/bundle/validate/target_variable_full_def_merge_key/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/target_variable_full_def/databricks.yml diff --git a/acceptance/bundle/validate/target_variable_shorthand_alias/out.test.toml b/acceptance/bundle/validate/yaml_anchors/target_variable_full_def/out.test.toml similarity index 100% rename from acceptance/bundle/validate/target_variable_shorthand_alias/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/target_variable_full_def/out.test.toml diff --git a/acceptance/bundle/validate/target_variable_full_def_merge_key/output.txt b/acceptance/bundle/validate/yaml_anchors/target_variable_full_def/output.txt similarity index 100% rename from acceptance/bundle/validate/target_variable_full_def_merge_key/output.txt rename to acceptance/bundle/validate/yaml_anchors/target_variable_full_def/output.txt diff --git a/acceptance/bundle/validate/target_variable_full_def_merge_key/script b/acceptance/bundle/validate/yaml_anchors/target_variable_full_def/script similarity index 100% rename from acceptance/bundle/validate/target_variable_full_def_merge_key/script rename to acceptance/bundle/validate/yaml_anchors/target_variable_full_def/script diff --git a/acceptance/bundle/validate/target_variable_merge_key_precedence/databricks.yml b/acceptance/bundle/validate/yaml_anchors/target_variable_precedence/databricks.yml similarity index 100% rename from acceptance/bundle/validate/target_variable_merge_key_precedence/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/target_variable_precedence/databricks.yml diff --git a/acceptance/bundle/validate/variable_overrides_file_complex_path/out.test.toml b/acceptance/bundle/validate/yaml_anchors/target_variable_precedence/out.test.toml similarity index 100% rename from acceptance/bundle/validate/variable_overrides_file_complex_path/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/target_variable_precedence/out.test.toml diff --git a/acceptance/bundle/validate/target_variable_merge_key_precedence/output.txt b/acceptance/bundle/validate/yaml_anchors/target_variable_precedence/output.txt similarity index 100% rename from acceptance/bundle/validate/target_variable_merge_key_precedence/output.txt rename to acceptance/bundle/validate/yaml_anchors/target_variable_precedence/output.txt diff --git a/acceptance/bundle/validate/target_variable_merge_key_precedence/script b/acceptance/bundle/validate/yaml_anchors/target_variable_precedence/script similarity index 100% rename from acceptance/bundle/validate/target_variable_merge_key_precedence/script rename to acceptance/bundle/validate/yaml_anchors/target_variable_precedence/script diff --git a/acceptance/bundle/validate/target_variable_merge_key_precedence/test.toml b/acceptance/bundle/validate/yaml_anchors/target_variable_precedence/test.toml similarity index 100% rename from acceptance/bundle/validate/target_variable_merge_key_precedence/test.toml rename to acceptance/bundle/validate/yaml_anchors/target_variable_precedence/test.toml diff --git a/acceptance/bundle/validate/target_variable_shorthand_alias/databricks.yml b/acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/databricks.yml similarity index 100% rename from acceptance/bundle/validate/target_variable_shorthand_alias/databricks.yml rename to acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/databricks.yml diff --git a/acceptance/bundle/validate/yaml_anchor_cycle_nested/out.test.toml b/acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/out.test.toml similarity index 100% rename from acceptance/bundle/validate/yaml_anchor_cycle_nested/out.test.toml rename to acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/out.test.toml diff --git a/acceptance/bundle/validate/target_variable_shorthand_alias/output.txt b/acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/output.txt similarity index 100% rename from acceptance/bundle/validate/target_variable_shorthand_alias/output.txt rename to acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/output.txt diff --git a/acceptance/bundle/validate/target_variable_shorthand_alias/script b/acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/script similarity index 100% rename from acceptance/bundle/validate/target_variable_shorthand_alias/script rename to acceptance/bundle/validate/yaml_anchors/target_variable_shorthand_alias/script From 826969f9a65d2136273333973a5421313798fe2f Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 19 Oct 2026 14:35:39 +0200 Subject: [PATCH 8/8] references/to_omitted_struct_defaults: reference bundle.git bundle.deployment.lock resolved to enabled: false although an unset lock is enabled by default, which made the recorded value misleading. bundle.git has only string fields, so an unset field and an empty one mean the same. Co-authored-by: Isaac --- .../to_omitted_struct_defaults/databricks.yml | 4 ++-- .../to_omitted_struct_defaults/output.txt | 14 ++++++++++---- .../references/to_omitted_struct_defaults/script | 5 +++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml b/acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml index 90df035dfcd..b3d428b5e16 100644 --- a/acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml +++ b/acceptance/bundle/validate/references/to_omitted_struct_defaults/databricks.yml @@ -2,6 +2,6 @@ bundle: name: test-bundle variables: - snapshot: + git_info: type: complex - default: ${bundle.deployment.lock} + default: ${bundle.git} diff --git a/acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt b/acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt index 3cbc766648c..479ce92fe43 100644 --- a/acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt +++ b/acceptance/bundle/validate/references/to_omitted_struct_defaults/output.txt @@ -2,12 +2,18 @@ >>> [CLI] bundle validate -o json { "default": { - "enabled": false, - "force": false + "actual_branch": "", + "branch": "", + "bundle_root_path": ".", + "commit": "", + "origin_url": "" }, "type": "complex", "value": { - "enabled": false, - "force": false + "actual_branch": "", + "branch": "", + "bundle_root_path": ".", + "commit": "", + "origin_url": "" } } diff --git a/acceptance/bundle/validate/references/to_omitted_struct_defaults/script b/acceptance/bundle/validate/references/to_omitted_struct_defaults/script index 12f958428b9..cb09a7b5bec 100644 --- a/acceptance/bundle/validate/references/to_omitted_struct_defaults/script +++ b/acceptance/bundle/validate/references/to_omitted_struct_defaults/script @@ -1,2 +1,3 @@ -# A reference to an unset struct resolves to the struct with its fields filled in. -trace $CLI bundle validate -o json | jq .variables.snapshot +# A reference to a struct that is not set in the configuration (here outside a git repository) +# resolves to the struct with its fields filled in, as empty values. +trace $CLI bundle validate -o json | jq .variables.git_info