Introduce 'insertbefore' and 'insertafter' to specify the position (#44811)

* Introduce 'insertbefore' and 'insertafter' to specify the position children have to be inserted.

* Added version_added to new options

* Xpath in example needs single quotes

* Added integration tests for insertafter and insertbefore

* Changed version_added to 2.8
This commit is contained in:
rwinand 2019-01-08 15:38:51 +01:00 committed by Dag Wieers
parent 1793cad07b
commit 2dbade4adc
6 changed files with 160 additions and 4 deletions

View file

@ -0,0 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<business type="bar">
<name>Tasty Beverage Co.</name>
<beers>
<beer>Rochefort 10</beer>
<beer>St. Bernardus Abbot 12</beer>
<beer>Old Rasputin</beer>
<beer>Old Motor Oil</beer>
<beer>Old Curmudgeon</beer>
<beer>Schlitz</beer>
</beers>
<rating subjective="true">10</rating>
<website>
<mobilefriendly/>
<address>http://tastybeverageco.com</address>
</website>
</business>

View file

@ -0,0 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<business type="bar">
<name>Tasty Beverage Co.</name>
<beers>
<beer>Rochefort 10</beer>
<beer>Old Rasputin</beer>
<beer>Old Motor Oil</beer>
<beer>Old Curmudgeon</beer>
<beer>St. Bernardus Abbot 12</beer>
<beer>Schlitz</beer>
</beers>
<rating subjective="true">10</rating>
<website>
<mobilefriendly/>
<address>http://tastybeverageco.com</address>
</website>
</business>

View file

@ -37,6 +37,8 @@
- include_tasks: test-add-children-elements.yml
- include_tasks: test-add-children-from-groupvars.yml
- include_tasks: test-add-children-insertafter.yml
- include_tasks: test-add-children-insertbefore.yml
- include_tasks: test-add-children-with-attributes.yml
- include_tasks: test-add-element-implicitly.yml
- include_tasks: test-count.yml

View file

@ -0,0 +1,32 @@
---
- name: Setup test fixture
copy:
src: fixtures/ansible-xml-beers.xml
dest: /tmp/ansible-xml-beers.xml
- name: Add child element
xml:
path: /tmp/ansible-xml-beers.xml
xpath: '/business/beers/beer[text()="St. Bernardus Abbot 12"]'
insertafter: yes
add_children:
- beer: Old Rasputin
- beer: Old Motor Oil
- beer: Old Curmudgeon
pretty_print: yes
register: add_children_insertafter
- name: Compare to expected result
copy:
src: results/test-add-children-insertafter.xml
dest: /tmp/ansible-xml-beers.xml
check_mode: yes
diff: yes
register: comparison
- name: Test expected result
assert:
that:
- add_children_insertafter.changed == true
- comparison.changed == false # identical

View file

@ -0,0 +1,32 @@
---
- name: Setup test fixture
copy:
src: fixtures/ansible-xml-beers.xml
dest: /tmp/ansible-xml-beers.xml
- name: Add child element
xml:
path: /tmp/ansible-xml-beers.xml
xpath: '/business/beers/beer[text()="St. Bernardus Abbot 12"]'
insertbefore: yes
add_children:
- beer: Old Rasputin
- beer: Old Motor Oil
- beer: Old Curmudgeon
pretty_print: yes
register: add_children_insertbefore
- name: Compare to expected result
copy:
src: results/test-add-children-insertbefore.xml
dest: /tmp/ansible-xml-beers.xml
check_mode: yes
diff: yes
register: comparison
- name: Test expected result
assert:
that:
- add_children_insertbefore.changed == true
- comparison.changed == false # identical