mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-13 23:45:04 +00:00
ref: append_rp and prepend_rp removed
feat: options dict for list transformations re-added feat: allow setting `keep` for dedup transformation with possible values: `first` (default) and `last` Signed-off-by: Fiehe Christoph <c.fiehe@eurodata.de>
This commit is contained in:
parent
3e0031f42b
commit
bfd973cdb1
2 changed files with 101 additions and 218 deletions
|
|
@ -426,50 +426,6 @@ class TestMergeVariablesLookup(unittest.TestCase):
|
|||
],
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
"get_option",
|
||||
side_effect=[None, "ignore", "suffix", None, "shallow", "append_rp", "replace", "replace", []],
|
||||
)
|
||||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_shallow_and_list_append_rp(self, mock_set_options, mock_get_option, mock_template):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_shallow_and_list_append_rp"],
|
||||
{
|
||||
"testdict1__merge_dict_shallow_and_list_append_rp": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_shallow_and_list_append_rp": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
results, [{"a": merge_hash_data["high_prio"]["a"], "b": [1, 1, 2] + merge_hash_data["high_prio"]["b"]}]
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
"get_option",
|
||||
side_effect=[None, "ignore", "suffix", None, "shallow", "prepend_rp", "replace", "replace", []],
|
||||
)
|
||||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_shallow_and_list_prepend_rp(self, mock_set_options, mock_get_option, mock_template):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_shallow_and_list_prepend_rp"],
|
||||
{
|
||||
"testdict1__merge_dict_shallow_and_list_prepend_rp": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_shallow_and_list_prepend_rp": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
results, [{"a": merge_hash_data["high_prio"]["a"], "b": merge_hash_data["high_prio"]["b"] + [1, 1, 2]}]
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
|
|
@ -596,76 +552,6 @@ class TestMergeVariablesLookup(unittest.TestCase):
|
|||
],
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
"get_option",
|
||||
side_effect=[None, "ignore", "suffix", None, "deep", "append_rp", "replace", "replace", []],
|
||||
)
|
||||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_deep_and_list_append_rp(self, mock_set_options, mock_get_option, mock_template):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_deep_and_list_append_rp"],
|
||||
{
|
||||
"testdict1__merge_dict_deep_and_list_append_rp": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_deep_and_list_append_rp": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
results,
|
||||
[
|
||||
{
|
||||
"a": {
|
||||
"a": {
|
||||
"x": "low_value",
|
||||
"y": "high_value",
|
||||
"z": "high_value",
|
||||
"list": ["low_value", "high_value"],
|
||||
}
|
||||
},
|
||||
"b": [1, 1, 2] + merge_hash_data["high_prio"]["b"],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
"get_option",
|
||||
side_effect=[None, "ignore", "suffix", None, "deep", "prepend_rp", "replace", "replace", []],
|
||||
)
|
||||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_deep_and_list_prepend_rp(self, mock_set_options, mock_get_option, mock_template):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_deep_and_list_prepend_rp"],
|
||||
{
|
||||
"testdict1__merge_dict_deep_and_list_prepend_rp": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_deep_and_list_prepend_rp": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
results,
|
||||
[
|
||||
{
|
||||
"a": {
|
||||
"a": {
|
||||
"x": "low_value",
|
||||
"y": "high_value",
|
||||
"z": "high_value",
|
||||
"list": ["high_value", "low_value"],
|
||||
}
|
||||
},
|
||||
"b": merge_hash_data["high_prio"]["b"] + [1, 1, 2],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
|
|
@ -737,12 +623,14 @@ class TestMergeVariablesLookup(unittest.TestCase):
|
|||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_deep_and_list_dedup(self, mock_set_options, mock_get_option, mock_template):
|
||||
def test_merge_dict_deep_and_list_append_with_dedup_keep_first(
|
||||
self, mock_set_options, mock_get_option, mock_template
|
||||
):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_deep_and_list_dedup"],
|
||||
["__merge_dict_deep_and_list_append_with_dedup_keep_first"],
|
||||
{
|
||||
"testdict1__merge_dict_deep_and_list_dedup": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_deep_and_list_dedup": merge_hash_data["high_prio"],
|
||||
"testdict1__merge_dict_deep_and_list_append_with_dedup_keep_first": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_deep_and_list_append_with_dedup_keep_first": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -762,3 +650,50 @@ class TestMergeVariablesLookup(unittest.TestCase):
|
|||
}
|
||||
],
|
||||
)
|
||||
|
||||
@patch.object(AnsiblePlugin, "set_options")
|
||||
@patch.object(
|
||||
AnsiblePlugin,
|
||||
"get_option",
|
||||
side_effect=[
|
||||
None,
|
||||
"ignore",
|
||||
"suffix",
|
||||
None,
|
||||
"deep",
|
||||
"prepend",
|
||||
"replace",
|
||||
"replace",
|
||||
[{"name": "dedup", "options": {"keep": "last"}}],
|
||||
],
|
||||
)
|
||||
@patch.object(
|
||||
Templar, "template", side_effect=[deepcopy(merge_hash_data["low_prio"]), deepcopy(merge_hash_data["high_prio"])]
|
||||
)
|
||||
def test_merge_dict_deep_and_list_prepend_with_dedup_keep_last(
|
||||
self, mock_set_options, mock_get_option, mock_template
|
||||
):
|
||||
results = self.merge_vars_lookup.run(
|
||||
["__merge_dict_deep_and_list_prepend_with_dedup_keep_last"],
|
||||
{
|
||||
"testdict1__merge_dict_deep_and_list_prepend_with_dedup_keep_last": merge_hash_data["low_prio"],
|
||||
"testdict2__merge_dict_deep_and_list_prepend_with_dedup_keep_last": merge_hash_data["high_prio"],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
results,
|
||||
[
|
||||
{
|
||||
"a": {
|
||||
"a": {
|
||||
"x": "low_value",
|
||||
"y": "high_value",
|
||||
"list": ["high_value", "low_value"],
|
||||
"z": "high_value",
|
||||
}
|
||||
},
|
||||
"b": [4, {"5": "value"}, 1, 2, 3],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue