When merging two configuration files, error gracefully if the two files do not adhere to the same format.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-06-26 16:46:09 -07:00
parent 44f9ab95f9
commit f60e97d5bf
3 changed files with 57 additions and 0 deletions

View File

@@ -702,6 +702,54 @@ def test_deep_merge_nodes_appends_colliding_sequence_values():
assert [item.value for item in options[0][1].value] == ['echo 1', 'echo 2', 'echo 3', 'echo 4']
def test_deep_merge_nodes_errors_on_colliding_values_of_different_types():
node_values = [
(
module.ruamel.yaml.nodes.ScalarNode(tag='tag:yaml.org,2002:str', value='hooks'),
module.ruamel.yaml.nodes.MappingNode(
tag='tag:yaml.org,2002:map',
value=[
(
module.ruamel.yaml.nodes.ScalarNode(
tag='tag:yaml.org,2002:str', value='before_backup'
),
module.ruamel.yaml.nodes.ScalarNode(
tag='tag:yaml.org,2002:str', value='echo oopsie daisy'
),
),
],
),
),
(
module.ruamel.yaml.nodes.ScalarNode(tag='tag:yaml.org,2002:str', value='hooks'),
module.ruamel.yaml.nodes.MappingNode(
tag='tag:yaml.org,2002:map',
value=[
(
module.ruamel.yaml.nodes.ScalarNode(
tag='tag:yaml.org,2002:str', value='before_backup'
),
module.ruamel.yaml.nodes.SequenceNode(
tag='tag:yaml.org,2002:seq',
value=[
module.ruamel.yaml.ScalarNode(
tag='tag:yaml.org,2002:str', value='echo 3'
),
module.ruamel.yaml.ScalarNode(
tag='tag:yaml.org,2002:str', value='echo 4'
),
],
),
),
],
),
),
]
with pytest.raises(ValueError):
module.deep_merge_nodes(node_values)
def test_deep_merge_nodes_only_keeps_mapping_values_tagged_with_retain():
node_values = [
(