mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-29 11:40:22 -07:00
add special word '+value' to add_children/set_children in xml module (#8437)
Some checks failed
EOL CI / EOL Sanity (Ⓐ2.15) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py2.7) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py3.10) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py3.5) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/3/) (push) Has been cancelled
nox / Run extra sanity tests (push) Has been cancelled
Some checks failed
EOL CI / EOL Sanity (Ⓐ2.15) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py2.7) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py3.10) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.15+py3.5) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+alpine3+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.15+fedora37+py:azp/posix/3/) (push) Has been cancelled
nox / Run extra sanity tests (push) Has been cancelled
* add special word '_value' to add_children/set_children in xml module * changelog fragment added * Update changelogs/fragments/8437-xml-children-value.yml Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * rebase * add integration test * fix result file of integration test --------- Co-authored-by: z1kk0 <anamleev@phoenixit.ru> Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
parent
0dc1d9045b
commit
3a1ad01b1b
6 changed files with 88 additions and 1 deletions
2
changelogs/fragments/8437-xml-children-value.yml
Normal file
2
changelogs/fragments/8437-xml-children-value.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- xml - support adding value of children when creating with subnodes (https://github.com/ansible-collections/community.general/pull/8437).
|
|
@ -301,6 +301,8 @@ EXAMPLES = r"""
|
|||
# Attributes
|
||||
name: Scumm bar
|
||||
location: Monkey island
|
||||
# Value
|
||||
+value: unreal
|
||||
# Subnodes
|
||||
_:
|
||||
- floor: Pirate hall
|
||||
|
@ -756,6 +758,7 @@ def child_to_element(module, child, in_type):
|
|||
(key, value) = next(iteritems(child))
|
||||
if isinstance(value, MutableMapping):
|
||||
children = value.pop('_', None)
|
||||
child_value = value.pop('+value', None)
|
||||
|
||||
node = etree.Element(key, value)
|
||||
|
||||
|
@ -765,6 +768,9 @@ def child_to_element(module, child, in_type):
|
|||
|
||||
subnodes = children_to_nodes(module, children)
|
||||
node.extend(subnodes)
|
||||
|
||||
if child_value is not None:
|
||||
node.text = child_value
|
||||
else:
|
||||
node = etree.Element(key)
|
||||
node.text = value
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer alcohol="0.5" name="90 Minute IPA">2</beer><beer alcohol="0.3" name="Harvest Pumpkin Ale">5</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: Ansible Project
|
|
@ -62,6 +62,7 @@
|
|||
- include_tasks: test-set-attribute-value.yml
|
||||
- include_tasks: test-set-children-elements.yml
|
||||
- include_tasks: test-set-children-elements-level.yml
|
||||
- include_tasks: test-set-children-elements-value.yml
|
||||
- include_tasks: test-set-element-value.yml
|
||||
- include_tasks: test-set-element-value-empty.yml
|
||||
- include_tasks: test-pretty-print.yml
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
---
|
||||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Setup test fixture
|
||||
copy:
|
||||
src: fixtures/ansible-xml-beers.xml
|
||||
dest: /tmp/ansible-xml-beers.xml
|
||||
|
||||
|
||||
- name: Set child elements
|
||||
xml:
|
||||
path: /tmp/ansible-xml-beers.xml
|
||||
xpath: /business/beers
|
||||
set_children: &children
|
||||
- beer:
|
||||
alcohol: "0.5"
|
||||
name: 90 Minute IPA
|
||||
+value: "2"
|
||||
- beer:
|
||||
alcohol: "0.3"
|
||||
name: Harvest Pumpkin Ale
|
||||
+value: "5"
|
||||
register: set_children_elements_value
|
||||
|
||||
- name: Add trailing newline
|
||||
shell: echo "" >> /tmp/ansible-xml-beers.xml
|
||||
|
||||
- name: Compare to expected result
|
||||
copy:
|
||||
src: results/test-set-children-elements-value.xml
|
||||
dest: /tmp/ansible-xml-beers.xml
|
||||
check_mode: true
|
||||
diff: true
|
||||
register: comparison
|
||||
|
||||
- name: Test expected result
|
||||
assert:
|
||||
that:
|
||||
- set_children_elements_value is changed
|
||||
- comparison is not changed # identical
|
||||
|
||||
|
||||
- name: Set child elements (again)
|
||||
xml:
|
||||
path: /tmp/ansible-xml-beers.xml
|
||||
xpath: /business/beers
|
||||
set_children: *children
|
||||
register: set_children_again
|
||||
|
||||
- name: Compare to expected result
|
||||
copy:
|
||||
src: results/test-set-children-elements-value.xml
|
||||
dest: /tmp/ansible-xml-beers.xml
|
||||
check_mode: true
|
||||
diff: true
|
||||
register: comparison
|
||||
|
||||
- name: Test expected result
|
||||
assert:
|
||||
that:
|
||||
- set_children_again is not changed
|
||||
- comparison is not changed # identical
|
Loading…
Add table
Add a link
Reference in a new issue